Тема: Назначение на админку 100 % копия Advance RP (Mysq)

Тема: Назначение на админку 100 % копия Advance RP (Mysq)

Назначение на админку 100 % копия Advance RP (Mysq)

Всем доброго времени суток.Я видел много тем,про назначение администратора,но никто так и не выложил настоящую систему назначения администратора как на ARP.Все это непохожие пародии.Сейчас Вы все узнаете как назначают на админку на таком крупно-масшабном проекте.

Для начала нам понадобится таблица MYSQL.Я Вам её уже подготовил:https://cloud.mail.ru/public/EaWM/WjzTffRzy

Далее мы зайдём в мод и добавим вот эту команду:

if( strcmp ( cmd , "/adm" , true ) == 0 && Logged [ playerid ] == true )

CMD : adm ( playerid , params [])

Переменные заменяйте на свои т.к. у многих они другие.

Теперь объясню принцип работы.

Загружаем таблицу,которую я Вам скинул к себе в Базу данных

Дальше заходим в саму таблицу "accounts_adm"

Далее нажимаем кнопку "ВСТАВИТЬ"

И теперь заполняем для того игрока,которому хотим дать админку.

account_id - это id его аккаунта (Можно переделать на NickName) acount_adm_lvl - Это уровень администратора,который хотим дать. account_adm_password - Это пароль для администратора (Обязателен только тем,у кого есть админ авторизация через пароль на сервере.Если у вас её нету,то можете удалить эту таблицу)

После того как ввели все данные,которые я указал,нажимаем ОК

Но важно,пока этот игрок не пропишет команду "/adm" ,он не сможет использовать админ команды.То есть по сути он еще не администратор.Но после того,как он введет /adm ,он удалится из таблицы "accountd_adm" ,но при этом станет администратором.

На Advance RP все точно так же.Команды назначения администраторов там нет.Есть только для понижения админов.Видимо это сделано,что если вдруг взломают Гл.админа,чтобы тот в свою очередь не надавал админок всем.Ну у меня всё,спасибо что почитали мою темку,от плюсиков не откажусь.

P.S.Есть люди,которые со мной спорили. Вот вам доказательство того,что эта команда копия Advance RP.

1 скриншот,когда игрока назначили администратором,но он ещё не уволился из организации:

2 скриншот,когда игрок уволился из организации и вводит команду /adm:

Видео можете найти на YouTube по названию) Думаю теперь у вас не появится сомнений,что это не копия Advance RP.

Команда вырезана из мода Scorpion RP.

Автор доработки: Danny_Marcelo

  • Просмотр профиля
  • Сообщения форума
  • Личное сообщение
  • Просмотр профиля
  • Сообщения форума
  • Просмотр профиля
  • Сообщения форума
  • Личное сообщение
  • Просмотр профиля
  • Сообщения форума
  • Просмотр профиля
  • Сообщения форума
  • Личное сообщение

Чет идея создания отдельной таблицы в базе мне не очень нравится. Я у одменов так же делал, но все в одной таблице со всеми аккаунтами.

Вот пример, месяц может назад делал (если не больше)

// SendFormatedMessage(игрок, массив, цвет, сообщение, параметры) #define SendFormatedMessage(%0,%1,%2,%3,%4) \ format (% 1 , sizeof (% 1 ),% 3 ,% 4 ), SendClientMessage (% 0 ,% 2 ,% 1 )

// random_min_max(маленькое число, большое число) #define random_min_max(%1,%2) \ random (% 2 -% 1 )+% 1

// если модератор не авторизовалс¤ как модератор #define IsModerNotLogged(%0) \ p_admin > 1 && p_admin_logged == 0

// если модератор авторизовалс¤ как модератор #define IsModerLogged(%0) \ p_admin > 1 && p_admin_logged == 1

static const admin_ranks [ 5 ][] = // ранги администраторов < "практикант" , "модератор" , "ст. модератор" , "мл. администратор" , "администратор" > ; // уведомление модератору с прикрепленным рангом #define SendRankMessage(%4,%0,%3,%1,%2) \ ( \ % 2 =% 1 , \ strcat (% 2 , admin_ranks [ p_admin - 1 ]), \ SendClientMessage (% 4 ,% 3 ,% 2 ) \ )

// максимальная длинна пароля модератора #define MAX_ADMIN_PASSWORD 6

new p_logged [ MAX_PLAYERS char ], p_admin [ MAX_PLAYERS char ], p_admin_password [ MAX_PLAYERS ][ MAX_ADMIN_PASSWORD ], p_admin_id [ MAX_PLAYERS ], p_admin_logged [ MAX_PLAYERS char ] ;

COMMAND : aduty ( playerid , params []) < if( p_logged < playerid >== 0 ) return 1 ;

if( IsModerLogged ( playerid )) return SendClientMessage ( playerid , 0xC2C2C2AA , "Вы уже прошли авторизацию." );

if( sscanf ( params , "s[7]" , params [ 0 ])) return SendClientMessage ( playerid , - 1 , "Введите /aduty [password]" );

if( strfind ( params [ 0 ], p_admin_password [ playerid ], true ) != - 1 ) < new str [ 41 ]; p_admin_logged < playerid >= 1 ; SendRankMessage ( playerid , playerid , 0x00FF00AA , "Вы авторизовались как " , str ); > return 1 ; >

COMMAND : addmoder ( playerid , params []) < if( p_logged < playerid >== 0 ) return 1 ;

if( p_admin < playerid >< 1 ) return 1 ;

if( IsModerNotLogged ( playerid )) return SendClientMessage ( playerid , 0xC2C2C2AA , "Авторизуйтесь в /aduty [password]" );

if( p_admin < playerid >< 5 ) return 1 ;

if( sscanf ( params , "ui" , params [ 0 ], params [ 1 ])) return SendClientMessage ( playerid , - 1 , "Введите /addmoder [id] [level]" );

if( p_admin < params [ 0 ]>> 1 ) return SendClientMessage ( playerid , 0xC2C2C2AA , "Он уже является модератором на сервере!" );

if( params [ 1 ] > 5 || params [ 1 ] < 1 ) return SendClientMessage ( playerid , 0xC2C2C2AA , "Уровень не может быть больше 5 и меньше 1!" );

new str [ MAX_PLAYER_NAME + 36 + 8 + 1 ];

p_admin < params [ 0 ]>= params [ 1 ]; p_admin_id [ params [ 0 ]] = random_min_max ( 111111 , 999999 ); random_abc ( p_admin_password [ params [ 0 ]]);

SendClientMessage ( params [ 0 ], - 1 , "" ); SendFormatedMessage ( params [ 0 ], str , 0xFF0033FF , "%s сделал вас модератором %d-го уровня." , p_name [ playerid ], p_admin [ params [ 0 ]]); SendFormatedMessage ( params [ 0 ], str , 0xFF0033FF , "Ваш личный модер-пароль: %s" , p_admin_password [ params [ 0 ]]); SendFormatedMessage ( params [ 0 ], str , 0xFF0033FF , "Ваш личный moderID %d" , p_admin_id [ params [ 0 ]]); SendClientMessage ( params [ 0 ], - 1 , "(скриншот F8)" ); SendClientMessage ( params [ 0 ], - 1 , "" ); return 1 ; > ALTX : addmoder ( "/addm" );

stock random_abc (array[]) // случайное месево букв и цифр < format (array, 7 , "%c%c%d%c%d%c" , 65 + random ( 26 ), 97 + random ( 26 ), random ( 10 ), 65 + random ( 26 ), random ( 10 ), 65 + random ( 26 )); >

📎📎📎📎📎📎📎📎📎📎