Lelouch

Система Full Dostup (в командах,не вписка в мод !)

В теме 10 сообщений

Вечер в хату молодые,на форуме как всегда тот самый Лелуш Британский (Я :c)
Сегодня я хочу вам предложить систему,которую я сделал по случайной идеи моего друга.
Суть системы:
Игрок сможет выдавать права FD(Full Dostup'a) другим игрокам,в свою же очередь игроки получившие данные права
смогут иметь какие-либо преимущество над Администраторами(уж тем более над игроками :D )
Эту систему я вчера в час ночи сделал,проверял как всегда в соло - работает как надо.
Можете считать это как Отдельную Админку.


Ну что-же,хватит лить воду,пора начать.
Я как всегда НА: Pawn.CMD и sscanf

( Гугл в помощь )

Добавляем Перемённую игроку (pFD)

В основном вам надо искать << enum pInfo >> и там уже ввести " pFD, " (без кавычек)

Пример:

enum pInfo
{
    pID, // ID Игрока (MySql)
    pFD, // Это нам нужно | FD
    pPassword[65], // Пароль Игрока
}

Воооо-т,после чего вы всё добавили ищем:

 

publics: LoginCallBack(playerid) :

( и ставим туда (корректируйте на свои если у вас другие строки,я надеюсь смог передать суть.) )

cache_get_field_content(0, "pFD", maximum),				PlayerInfo[playerid][pFD] = strval(maximum);

Так-с,ну что же. Настало время Команды которое это всё будет выдавать и сохранять в MySql
(Напоминаю: Что-бы сохранить перемённую в MysQl Вам надо создать её в вашей БД !

Для этого: Заходим на PhpmyAdmin (жмёте на свою БД) жмём на столб с Аккаунтами(Часто: accounts), там же по верхней линии я надеюсь вы увидите Слово "Структура" - Заходим туда и матаем полностью вниз,там находим "Добавить 1 поле" после " 'чё-то там' " выбирайте если вы хотите после какой перемённой вы хотите добавить pFD,после чего вам надо добавить ТОЛЬКО имя перемённой (pFD) и Значение по умолчанию поставить: 0 - Всё !)
 

Так-как Я по какой-то причине не смог загрузить нормально скрин-шот,я предоставлю их в формате ссылок.
Скрин-Шот MySql #1
Скрин-Шот MySql #2
Команда:

CMD:givefd(playerid, params[]) // MY CMD
{
	if(strcmp(PlayerInfo[playerid][pNames], "Maga_Volkov")) return SCM(playerid, -1, "{cc0000}ВНИМАНИЕ:{ffffff} У вас не хватает{cc0000} прав{ffffff} на эту команду !");
	if(sscanf(params, "dd", params[0], params[1])) return SCM(playerid, -1, "Используйте: /givefd [ID] [FD Level]");
	if(PlayerInfo[params[0]][pScripter] == 1) return SendClientMessage(playerid, COLOR_GRAD2, "{cc0000}Его нельзя !");
	new stt[144];
	format(stt, sizeof(stt), "{ffc700}[LOG] Администратор %s[%d] попытался повысить/понизить FD Администратора %s[%d] !{ff0000}(%d)", PlayerInfo[playerid][pNames], playerid, PlayerInfo[params[0]][pNames], params[0], params[1]);
	SendScripterMessage(-1,stt);
	PlayerInfo[params[0]][pFD] = params[1];
	if(params[1] != 0)
	{
	format(stringer1, sizeof(stringer1), "[A] {cc0000}Скриптер {ffffff}%s[%d]{cc0000} выдал {ffffff}Full Dostup{cc0000} %d уровня игроку {ffffff}%s[%d]", PlayerInfo[playerid][pNames], playerid, params[1], PlayerInfo[params[0]][pNames], params[0]);
	SendAdminMessage(COLOR_WHITE,stringer1);
	format(stringer, sizeof(stringer), "{ffc700}Скриптер {ff0000}%s[%d]{ffc700} выдал вам{ff0000} Full Dostup LVL: %d{ffc700} (/fdhelp) !", PlayerInfo[playerid][pNames], playerid, params[1]);
	SCM(params[0],-1,stringer);
	PlayerInfo[params[0]][pBlNick] = 1;
	PlayerInfo[params[0]][pcBan] = 1;
	PlayerInfo[params[0]][pcWarn] = 1;
	PlayerInfo[params[0]][pcOffBan] = 1;
	PlayerInfo[params[0]][pInv] = 1;
	UpdatePlayerData(params[0], "pInv", PlayerInfo[params[0]][pInv]);
	format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pFD` = '%d' `pBlNick` = '1', `pcBan` = '1', `pcWarn` = '1', `pcOffBan` = '1' WHERE `pID` = '%d'", PlayerInfo[params[0]][pFD], PlayerInfo[params[0]][pID]);
	mysql_function_query(connects, mysql_query_, false, "", "");
	UpdatePlayerData(params[0], "pFD", PlayerInfo[params[0]][pFD]);
	new string[144];
	format(string, sizeof(string), "{00ff00}[Успешно]:{ffffff} Скриптер %s[%d] {00ff00}выдал{ffffff} вам комплект команд (Подробнее: /fdhelp 1 lvl).", PlayerInfo[playerid][pNames], playerid);
	SCM(params[0],-1,string);
	return 1;
	}
	if(params[1] == 0)
	{
	PlayerInfo[params[0]][pBlNick] = 0;
	PlayerInfo[params[0]][pcBan] = 0;
	PlayerInfo[params[0]][pcWarn] = 0;
	PlayerInfo[params[0]][pcOffBan] = 0;
	PlayerInfo[params[0]][pInv] = 0;
	UpdatePlayerData(params[0], "pInv", PlayerInfo[params[0]][pInv]);
	format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pFD` = '0' `pBlNick` = '0', `pcBan` = '0', `pcWarn` = '0', `pcOffBan` = '0' WHERE `pID` = '%d'", PlayerInfo[params[0]][pID]);
	mysql_function_query(connects, mysql_query_, false, "", "");
	new str[144], str1[144], str2[144];
	format(str, sizeof(str), "[A] {cc0000}Скриптер {ffffff}%s[%d]{cc0000} снял {ffffff}Full Dostup{cc0000} игроку {ffffff}%s[%d]", PlayerInfo[playerid][pNames], playerid, PlayerInfo[params[0]][pNames], params[0]);
	SendAdminMessage(-1,str);
	format(str1, sizeof(str1), "{ffc700}Скриптер {ff0000}%s[%d]{ffc700} снял с вас{ff0000} Full Dostup {ffc700}!", PlayerInfo[playerid][pNames], playerid);
	SCM(params[0],-1,str1);
	format(str2, sizeof(str2), "{00ff00}[Успешно]:{ffffff} Скриптер %s[%d] {ff0000}забрал{ffffff} у вас команды: /aclist | /ban | /warn | /offban | Функц. Скрытность", PlayerInfo[playerid][pNames], playerid);
	SCM(params[0],-1,str2);
	return 0;
	}
	return true;
}

(Знаю что код такое себе,можно было сделать гораздо лучше,извините :c)
Ну что-же,пора разбирать её по кусочкам.

Формат: (Строка) - (Функция которую выполняет)
1 - Проверка на ник (если у игрока не будет ника который там стоит - не сможет исп. команду )
Так-же:
PlayerInfo[playerid][pNames] = Инфо. о игроке[его ИД][егоИмя]

2 - Пишем как надо исп. команду + добавляем сами параметры в наш код.

Так-же:

Макрос SCM (SendClientMessage) - Как его сделать ?
К #define добавляем(с новой строки,никак не продолжением какой-то !)

#define SCM SendClientMessage

3 - (Моя предыдущая система с Логами в игре,идёт проверка на "Скриптера 1ого уровня")

Так-же:

PlayerInfo[params[0]][pScripter] = Инфо о Игроке[параметр 0(ID игрока как мы указали в 2ой строке)][перемённая Скриптера]

4 - Ставим новый обьект,даже не знаю как это назвать,я самоучка так что скажу как знаю.

Пишем new stt[144*длинна*];

И дальше мы его будем использовать в 5ой строке !

5 - Форматируем сообщение где используем new stt[144]; - Пишем сообщение в чат скриптеров что Админ попытался понизить/повысить Скриптера

6 - Отправляем сообщение в лог-чат ( Если у вас нету моей системы то убирайте pScripter == 1,и вообще убирайте строки: 3,4,5,6 )

7 -  Выдаём игроку FD  Скажем так. Где:

PlayerInfo[params[0]][pFD] = params[1];

Информация о Игроке[параметр 0(ID Игрока как мы указывали)][Перемённая Full Dostup'a] = Параметр [1] 

Или же Уровень FD,как мы Указывали.

8 - Если Параметр 1 НЕ Ровно 0:

9 -  Обобщу: Выдаём игроку права "Фулл Доступа + Доп. Команды" Если у вас нету этих самых доп. команд или вы хотите выдавать ТОЛЬКО Фулл Доступ в плане Перемённой,а не доп. команды,то убирайте строки:  7,8,9,10,11,12

12 - Обновляем Инфо о Игроке (Перемённая pInv) - Скрытность (У меня мод с Бонусом)

13-14 - Сохраняем это всё дело в MySql.(Извиняюсь,не подумал что надо было вырезать из кода когда на сайт загрузил,так что я скину код как надо ставить если у вас нету Доп.Команд или вы их не хотите выдавать.)

format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pFD` = '%d'  WHERE `pID` = '%d'", PlayerInfo[params[0]][pFD], PlayerInfo[params[0]][pID]);
mysql_function_query(connects, mysql_query_, false, "", "");

Где:

(Закекался уже писать про PlayerInfo[params[0]][pFD],так что просто скажу)

Мы в этой строке сохраняем перемённую pFD в Базу Данных.(без доп. команд)

15 - Обновляем перемённую pFD Для игрока.
16 - Опять же добавляем новую строку для format(Форматирования строки)

17 - Пишем что Скриптер выдал ему ещё и комплект доп. команд (опять же,если у вас их нету - удалить строки: 16-18)
18 - Я думаю тут и так понятно,кто не шарит гугл в помощь.

19 - Закрываем "тело" если параметр 1 не равно 0 и переходим к:

20 - Если Параметр 1 равно 0(снимаем с него плюшки)

22 - Опять-же,если у вас нету эти доп. команд или вы не хотите их выдавать,убирайте Строки: 22,23,24,25,26,27 !

28-29 - Сохраняем это всё в MySql
Код без Доп.Команд:

format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pFD` = '0'  WHERE `pID` = '%d'", PlayerInfo[params[0]][pID]);
mysql_function_query(connects, mysql_query_, false, "", "")

30 - Добавляем новые "строки" для форматирования строк -_-,я надеюсь люди которые шарят по лучше меня,напишут как Правильно это называется. Уж извините.
31-36 - Пишем: Админам,Игроку что с Игрока сняли Фулл Доступ,Пишем игроку об этом + отнимаем команды,если у вас их нету/не хотите выдавать - Удаляйте: new str2[144], строки - 35,36.
37 - Тут опять же думаю понятно,что мы останавливаем действие.
38 Ритурн Тру :c
Фууух,вроде всё сказал как надо,дальше уже делайте че хотите с ней,на ваше усмотрение,ищите в интернете и добавляйте всякие преимущества для них или команды или ещё что,надеюсь вы поняли.

Команда /fdhelp:

CMD:fdhelp(playerid, params[])
{
	if(PlayerInfo[playerid][pFD] >= 1)
	{
	format(stringer, sizeof(stringer), "{ff0000}Команды Full Dostup:{ffffff} (Ваш уровень FD: %d !)", PlayerInfo[playerid][pFD]);
	SCM(playerid,-1,stringer);
 	SendClientMessage(playerid, 0xB8860BFF, "1 LVL: (Доступны команды: /ban | /offban | /aclist | /warn | Функц.: Скрытность |) ");
 	}
	if(PlayerInfo[playerid][pFD] >= 2) SendClientMessage(playerid, 0xB8860BFF, "2 LVL: /payday");
	if(PlayerInfo[playerid][pFD] >= 3) SendClientMessage(playerid, 0xB8860BFF, "3 LVL: /pidor");
	if(PlayerInfo[playerid][pFD] >= 4) SendClientMessage(playerid, 0xB8860BFF, "4 LVL: ");
	if(PlayerInfo[playerid][pFD] >= 5) SendClientMessage(playerid, 0xB8860BFF, "5 LVL: ");
	return true;
}

Объяснять ничего не буду,всё уже объяснено выше.

Отредактировано пользователем Lelouch
Причина: МиссКликом запустил тему хотя даже и не дописал до конца :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch Новичок при написание сдохнет от такого

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 10.01.2022 в 18:20, Donaldo_Farekelka сказал:

@Lelouch Новичок при написание сдохнет от такого

Ну я постарался описать всю опирацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Единственное, что я не понял: почему модераторы до сих пор не выдали предупреждение за 3.2?
Урок хороший, более менее расписано, но в следующий раз читай правила оформления топиков.

Только сейчас заметил. Слишком много лишнего в команде, да и в принципе.
Если уж Вы и решились показать это все пользователям, будьте добры, делайте с нуля, а не ctrl+c, ctrl+v сюда.

Отредактировано пользователем glvde.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 часа назад, glvde. сказал:

Единственное, что я не понял: почему модераторы до сих пор не выдали предупреждение за 3.2?
Урок хороший, более менее расписано, но в следующий раз читай правила оформления топиков.

Только сейчас заметил. Слишком много лишнего в команде, да и в принципе.
Если уж Вы и решились показать это все пользователям, будьте добры, делайте с нуля, а не ctrl+c, ctrl+v сюда.

ctrl + c ctrl + v ? Это целеком и полностью моя команда. С нуля её сделал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch:

12 минут назад, Lelouch сказал:

Слишком много лишнего в команде, да и в принципе.
Если уж Вы и решились показать это все пользователям, будьте добры, делайте с нуля, а не ctrl+c, ctrl+v сюда.


Подразумевалось то, что для форума в данной системе слишком много лишнего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch, как насчет того, чтобы написать урок по реализации системы регистрации/авторизации, автомобилей, бизнесов, домов, гаражей - чего угодно? Для чистого мода (с нуля).

 

При необходимости помогу чем нужно как в плане теории, так и в плане практики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Cawfee сказал:

@Lelouch, как насчет того, чтобы написать урок по реализации системы регистрации/авторизации, автомобилей, бизнесов, домов, гаражей - чего угодно? Для чистого мода (с нуля).

 

При необходимости помогу чем нужно как в плане теории, так и в плане практики.

Не варик,я уже работаю на одном проекте сижу 24/7 в моде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch, предложил потому, что это было бы несколько более полезно и актуально для пользователей портала. А так рад за вас, удачи на работе :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Cawfee сказал:

@Lelouch, предложил потому, что это было бы несколько более полезно и актуально для пользователей портала. А так рад за вас, удачи на работе :)

Спасибо большое. Вам того же желаю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • benz123
      От benz123
      Добрейшего дня форумчане. Вообщем вчера писал код для новогодних квестов на основе ActorDialog. Не работает клавиша закрыть, перерыл все форумы и весь интернет. Писал знакомой гадалке, даже она не знает. Надеюсь всемогущие форумчане смогут мне помочь. Очень прошу. 
      Код : 

      }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -12.1547,778.4205,12.0991))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,4, \"Текст?\", \"\", \"Персонаж 1\", [[\"Закрыть\",\"Agressive\",\"\"]],[\"\"]]");
                      EnablePlayerGPS(playerid, 37, -107.3198,785.9228,12.1681, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -107.3198,785.9228,12.1681))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,8, \"Ýòî óëûáêà-áîò Åãî óëûáàþùèéñÿ ýêðàí íàñòðîåí íà îáùåíèå ñ ëþäüìè, ñîçäàâàÿ ïîçèòèâíóþ àòìîñôåðó. Îí îñíàùåí ñèñòåìîé ðàñïîçíàâàíèÿ ëèö è ðå÷è, ÷òî ïîçâîëÿåò åìó àäàïòèðîâàòü îòâåòû ïîä íóæäû êàæäîãî ãîñòÿ\", \"\", \"Ïîìîùíèê Þðèé\", [[\"Çàêðûòü\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 4);
                      EnablePlayerGPS(playerid, 37, -253.4961,769.5287,12.1236, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -253.7807,768.8877,12.1219))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog_2","[0,9, \"Ýòîò êîìïàêòíûé ðîáîò - ýòî ðåâîëþöèîííàÿ óáîð÷íàÿ ìàøèíà áóäóùåãî, ñïîñîáíàÿ ïîääåðæèâàòü ÷èñòîòó íà áîëüøèõ ïëîùàäÿõ áåç ó÷àñòèÿ ÷åëîâåêà. Îí îñíàùåí ñèñòåìîé ðàñïîçíàâàíèÿ ïðåïÿòñâèé, óìíûì ïëàíèðîâàíèåì ìàðøðóòà è ýêîëîãè÷íûìè ÷èñòÿùèìè ñðåäñòâàìè. Èñïîëüçóåò ìèíèìàëüíîå êîëè÷åñòâî âîäû è ýëåêòðîýíåðãèè, ÷òî äåëàåò åãî ýêîëîãè÷åñêè áåçîïàñíûì è ýôôåêòèâíûì ïîìîùíèêîì äëÿ óáîðêè ãîðäñêèõ è îáùåñòâåííûõ ïðîñòðàíñòâ\", \"\", \"Ïîìîùíèê Äåíèñ\", [[\"Çàêðûòü\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 5);
                      EnablePlayerGPS(playerid, 37, -253.4961,769.5287,12.1236, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -256.0965,782.8863,12.1324))
              {
                  {
                      SetPlayerData(playerid, QUESTHelloween, 6);
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "Video", "[\"newyear/train_vol1.webm\", 0.5]");
                      SetTimer("konesvidoas",115000,false);
                      EnablePlayerGPS(playerid, 37, -2701.5149,381.4050,10.1074, "");
                  }
              }
          }
          if(newkeys == 1024)         //после этого можно не обращать внимание на последующий код. (не доделал )
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -2701.5149,381.4050,10.1074))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 6)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 7);
                      SCM(playerid, -1, "{FFFFFF}Äà èäè íàõóé îò ñþäà çàåáàë ÷åðò");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5026.2183,4054.4126,4.7527))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 7)
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,12, \"Õóé Çíàåò ÷òî òóò ïèñàòü ëåíü äîïèñûâàòü è çàõîäèòü íà ðàäìèð\", \"\", \"èäó íàõóé\", [[\"Ïîøåë ÿ íàõóé\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 8);
                      SetPlayerCheckpoint(playerid, -5008.2627,4067.5132,6.7602, 3.0);
                  }
              }
          }
          if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5026.2183,4054.4126,4.7527))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 13)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 14);
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,13, \"Õóé Çíàåò ÷òî òóò ïèñàòü ëåíü äîïèñûâàòü è çàõîäèòü íà ðàäìèð\", \"\", \"èäó íàõóé\", [[\"Ïîøåë ÿ íàõóé\",\"Agressive\",\"\"]],[\"\"]]");
                  }
              }
          }
          if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5044.3330,4049.4717,3.5460))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 14)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 15);
                  }
              }
          }
              if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5044.3330,4049.4717,3.5460))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 14)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 15);
                  }
              }
          }
          if(newkeys & 1024) // YOI 1 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5008.2627,4067.5132,6.7602))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 8)
                  {
                      SetPlayerCheckpoint(playerid, -5002.4692,4066.9282,7.081, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 1 ec 5 noa?oaia.");
                      SetPlayerData(playerid, QUESTHelloween, 9);
                  }
              }
          }
          if(newkeys & 1024) // YOI 2 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5002.4692,4066.9282,7.0811))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 9)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 10);
                      SetPlayerCheckpoint(playerid, -5003.5225,4075.0249,4.1990, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 2 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 3 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5003.5225,4075.0249,4.1990))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 10)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 11);
                      SetPlayerCheckpoint(playerid, -5004.6738,4078.8770,6.4648, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 3 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 4 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5004.6738,4078.8770,6.4648))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 11)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 12);
                      SetPlayerCheckpoint(playerid, -4984.7524,4082.1750,4.3296, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 4 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 5 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -4984.7524,4082.1750,4.3296))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 12)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 13);
                      DisablePlayerCheckpoint(playerid);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 5 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 1 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1906.3938,-2670.9546,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween11) == 1)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 1);
                      SetPlayerCheckpoint(playerid, 1872.6256,-2659.2671,11.1613, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 1 ec 10 noa?oaia.");
                      SetPlayerData(playerid, QUESTHelloween11, 2);
                  }
              }
          }
          if(newkeys & 1024) // YOI 2 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1872.6256,-2659.2671,11.1613))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 1)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 2);
                      SetPlayerCheckpoint(playerid, 2050.4109,-2655.9016,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 2 ec 10 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 3 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2050.4109,-2655.9016,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 2)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 3);
                      SetPlayerCheckpoint(playerid, 2015.9215,-2651.8269,11.2707, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 4 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2015.9215,-2651.8269,11.2707))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 3)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 4);
                      SetPlayerCheckpoint(playerid, 1966.4814,-2671.0747,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 5 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1966.4814,-2671.0747,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 4)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 5);
                      SetPlayerCheckpoint(playerid, 2039.4039,-2671.2263,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 6 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2039.4039,-2671.2263,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 5)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 6);
                      SetPlayerCheckpoint(playerid, 1899.6978,-2655.9736,11.1613, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 7 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1899.6978,-2655.9736,11.1613))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 6)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 7);
                      SetPlayerCheckpoint(playerid, 1933.0284,-2659.2686,11.0084, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 8 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1933.0284,-2659.2686,11.0084))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 7)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 8);
                      SetPlayerCheckpoint(playerid, 1953.4424,-2651.9602,11.2707, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 9 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1953.4424,-2651.9602,11.2707))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 8)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 9);
                      SetPlayerCheckpoint(playerid, 2012.9543,-2659.3840,11.2629, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 10 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2012.9543,-2659.3840,11.2629))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 9)
                  {
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      DisablePlayerCheckpoint(playerid);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      SetPlayerData(playerid, QUESTHelloween, 2);
                  }
              }
          }




      Пояснение : Сервер если что копия радмира. Форум буду посещать 24/7.
      ВК: @afk2007
    • SystemDev
      От SystemDev
      Доброго времени суток, уважаемые пользователи Pawno-Rus!
      В первую очередь, хочу поздравить всех вас с наступающим новым годом и пожелать вам хорошего окончания этого года, и исполнения всех ваших желаний.
      Ну а теперь перейдём к самой теме, в которой я хочу представить вам свою доработку игрового мода Rockford RP.
      Мод был полностью протестирован моей командой и пофикшен максимум найденных нами багов. Мод был хорошо доработан и я могу с уверенностью заявить что он отлично подойдёт для основы или же под открытие с ним целого проекта!
      Что-ж, не будем много говорить и давайте перейдём к списку проделанной нами работы:
      1. Была полностью переписана система регистрации и авторизации. Более подробно вы можете взглянуть на неё на прикреплённых к теме изображениях.
      2. У домов и квартир теперь есть названия классов: Эконом, Комфорт, Комфорт+, Бизнес, Элитный
      3. Теперь  у каждого бизнеса есть иконка на карте (Их не было у продуктовых магазинов и 24/7)
      4. Были пофикшены актёры в бизнесах и актёры были добавлены в те бизнесы, в которых их не было (Не отображались)
      5. Был подключен и хорошо настроен античит Nex-AC, так-же у администрации теперь есть лист читеров в виде текстдрава в левом нижнем углу
      6. Был удалён весь лишний маппинг с улиц и пляжей, а так-же весь оставшийся маппинг был перенесён в модули
      7. Все текстравы были перенесены в модуль
      8. Проработаны начальные квесты
      9. Теперь у домов есть 3д текст на въезде в гараж и на выходе из гаража
      10. Меню дома теперь можно открыть нажав в доме "F"
      11. Теперь перед покупкой дома, можно взглянуть на него изнутри и уже после этого купить его нажав кнопку "F" в доме
      12. Теперь если нет медиков в игре, то мед.карту можно получить в регистратуре любой из больниц
      13. Пофикшен навигатор (Не всегда совпадали пункты)
      14. Добавлена 5 банда - The Rifa Gang
      15. Гетто теперь стало более обширным (130 квадратов)
      16. Новая система сытости и жажды (При уровне сытости и жажды ниже 20, появляются 2 иконки возле худа с деньгами игрока, их можно увидеть на одном из скриншотов)
      17. Система рулетки (Выдаётся за каждые 3 отыгранных часа. Использовать можно в /mm > Рулетка)
      18. Теперь у стрел мафий тоже есть своя табличка + киллы считаются
      19. Отредактированы и оптимизированы начальные работы (+ ЗП теперь выдаётся в случае смерти, спавна или вылета)
      20. Работа развозчика пиццы была улучшена и добавлена в /gps и в квесты
      21. Рабочий транспорт на работе газонокосильщика теперь бесплатный
      22. Теперь у всех дверей, ворот и шлагбаумов есть 3д текст с информацией как их открыть
      23. Ставка в автоматах казино ЛС теперь снимается сразу
      24. Добавлено казино ЛВ и игра в кости (5 игроков и крупье)
      25. Спавн в гетто был вырезан
      26. Теперь мафии не могут начать стрелу за бизнес, если у бизнеса нет владельца
      27. Крыша бизнеса теперь отображается
      28. Пофикшен "Online/Offline" в /leaders (Не правильно отображала)
      29. Бандам за капт теперь не даётся по 500 вирт
      30. Во время капта или стрелы участники теперь спавнятся на базе организации (Раньше спавнились в больнице с 10 ХП)
      31. Лечение в больнице теперь бесплатное (+ Лечение теперь начинается при нажатии ALT)
      32. Кокаин теперь тяжелый наркотик, а марихуанна лёгкий (Было наоборот)
      33. Убраны звуки в диалогах
      34. Метка поиска дома теперь удаляется
      35. При включении/выключении акций администрацией теперь всех уведомляет и автоматически меняется название сервера (Пример: Universal RP | Акция!)
      36. Переписана /ahelp
      37. Администрация теперь может останавливать стрелу мафий за бизнес (/stopbizwar)
      38. Добавлен запрет на оружие миниган, прибор ночного видения и т.п
      39. Пофикшены все сделки по продаже/обмене имущества (Деньги выдавались наоборот или вовсе не выдавались)
      40. Новая система операций с наличными
      41. Теперь все сделки и предложения происходят по Y/N
      42. Администрация теперь прямо из игры может удалить дом или бизнес: /delbiz /delhouse
      43. Теперь нельзя использовать /invite во время капта и стрелы
      44. Пофикшен текст при /unload (не отображалось кол-во привезённых матов)
      45. Новый 3д текст складов банд и мафий
      46. Для использования часов (/time) теперь нужно купить их в магазине аксессуаров и надеть на персонажа
      47. Для использования макси (/mask) теперь нужно купить её в магазине аксессуаров и надеть на персонажа (Так-же срок действия маски теперь 10 минут)
      и еще 30+ пунктов которые сюда не влезут так что тг @qnusn ( там покажу подробно описание мода)
      Если возникли какие-либо вопросы, пишите в Telegram - @qnusn