Тема: Назначение на админку 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 )); >