Sign in to follow this  
Followers 0
Lelouch

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

10 posts in this topic

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 10.01.2022 в 18:20, Donaldo_Farekelka сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

Edited by glvde.

Share this post


Link to post
Share on other sites
23 часа назад, glvde. сказал:

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

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

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

Share this post


Link to post
Share on other sites

@Lelouch:

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

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


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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
Только что, Cawfee сказал:

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 минуты назад, Cawfee сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content