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

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

Lelouch
Освоившийся

Вечер в хату молодые,на форуме как всегда тот самый Лелуш Британский (Я :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 Новичок при написание сдохнет от такого

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

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


Ссылка на сообщение
Поделиться на другие сайты
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

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

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

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

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


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

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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@Lelouch:

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

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


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

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


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

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

 

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

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


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

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

 

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

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

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


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

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

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


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

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

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

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


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

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

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

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

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


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

Войти

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


Войти

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

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

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

    • Super_Gost'
      От Super_Gost'
      Приветствую. Для разработки собственного проекта требуется специалист, способный подготовить стабильную клиентскую базу на движке GTA San Andreas для работы с картой CRMP.

      Техническое задание:

      Задача: Интегрировать файлы карты CR в клиент так, чтобы обеспечить стабильную работу в SA-MP 0.3.7 / open.mp.

      Лимиты: Настроить Fastman92 Limit Adjuster. Необходимо грамотно расширить лимиты: IDE записей и так далее.

      Синхронизация с сервером: Подготовить список ID используемых объектов для корректного переноса в серверную часть на ядро Open MP.

      Требования к результату:

      Клиент должен запускаться без крашей и работать без прочих багов.

      На выходе нужно получить готовую сборку (архив), которая станет "фундаментом" для дальнейшей разработки мода и лаунчера.

      Бюджет обсуждаем. Ищу человека с опытом в CRMP-моддинге, который разбирается в этом. Сама работа является единоразовой/не на постоянной основе.

      Данные для связи: Tg: @Ichigo22149
    • Dkskssjksk
      От Dkskssjksk
      🎮 Aeron RP — твой новый мир приключений!
       
      Долгожданный релиз уже близко! Совсем скоро ты сможешь окунуться в атмосферу настоящей ролевой игры на проекте Aeron RP.
       
      📅 Даты выхода:
       
      ПК: 15 мая.
      Android: 17 июня.
      🔥 Что тебя ждёт?
       
      Уникальная атмосфера и интересные задания.
      Дружное сообщество и активная администрация.
      Множество возможностей для развития своего персонажа.
      Не упусти шанс стать частью чего-то большего! Присоединяйся к нам уже сейчас, чтобы быть в курсе всех новостей и первыми узнать о старте.
       
      📢 Жми на ссылку и вступай в нашу группу:https://vk.me/join/TbRXlGjoMv4ymO3jogFudJOTVKZbmFfNYLc=
       
      Aeron RP — твоя история начинается здесь!
    • sinvays
      От sinvays
      PayDay RolePlay (Бонусный мод)
      Скачать файл Версия MySQL: R39-6
      Командный процессор: Pawn.CMD
      Объём основного файла: ~36к строк
      Античит: Nex-AC

      Подключение к базе данных:
      • Файл: new.pwn

      Описание:
      Работал когда-то с Ильёй Демидовым. Опыт был негативный, дальше сотрудничество смысла не имело. Позже к проекту подключился Костя Царик, и ситуация только ухудшилась. Сам мод изначально разрабатывался другим разработчиком, Сергей Щеблыкин, после него подключился я. В какой-то момент возникли проблемы по части оплаты которую обязан был выплатить Илья Демидов, после этого я забрал мод и прекратил работу. Недавно также была заблокирована группа PayDay из-за конфликтной ситуации с покупкой игрового проекта. Сам мод на текущий момент не представляет особой ценности как готовый продукт, по крайней мере для меня. Внутри много старых решений и костылей, доставшихся ещё с ранних версий PayDay старым разработчиком. С моей стороны были сделаны базовые вещи - система выдачи команд, префиксы, а также исправлены критические баги, из-за которых мод падал. По нагрузке может держать около 200 игроков, но точных гарантий нет, там было накручено не больше 200+ ботов. На этом от моего имени PayDay закрыт.
      Добавил sinvays Добавлено 19.04.2026 Категория Моды Автор sinvays  
    • sinvays
      От sinvays
      Версия MySQL: R39-6
      Командный процессор: Pawn.CMD
      Объём основного файла: ~36к строк
      Античит: Nex-AC

      Подключение к базе данных:
      • Файл: new.pwn

      Описание:
      Работал когда-то с Ильёй Демидовым. Опыт был негативный, дальше сотрудничество смысла не имело. Позже к проекту подключился Костя Царик, и ситуация только ухудшилась. Сам мод изначально разрабатывался другим разработчиком, Сергей Щеблыкин, после него подключился я. В какой-то момент возникли проблемы по части оплаты которую обязан был выплатить Илья Демидов, после этого я забрал мод и прекратил работу. Недавно также была заблокирована группа PayDay из-за конфликтной ситуации с покупкой игрового проекта. Сам мод на текущий момент не представляет особой ценности как готовый продукт, по крайней мере для меня. Внутри много старых решений и костылей, доставшихся ещё с ранних версий PayDay старым разработчиком. С моей стороны были сделаны базовые вещи - система выдачи команд, префиксы, а также исправлены критические баги, из-за которых мод падал. По нагрузке может держать около 200 игроков, но точных гарантий нет, там было накручено не больше 200+ ботов. На этом от моего имени PayDay закрыт.