PHP код:
// 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{%0} > 1 && p_admin_logged{%0} == 0
// если модератор авторизовалс¤ как модератор
#define IsModerLogged(%0) \
p_admin{%0} > 1 && p_admin_logged{%0} == 1
static const
admin_ranks[5][] =
// ранги администраторов
{
"практикант",
"модератор",
"ст. модератор",
"мл. администратор",
"администратор"
}
;
// уведомление модератору с прикрепленным рангом
#define SendRankMessage(%4,%0,%3,%1,%2) \
( \
%2=%1, \
strcat(%2,admin_ranks[p_admin{%0}-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 сделал вас модератором {FFFFFF}%d-го уровня.", p_name[playerid], p_admin[params[0]]);
SendFormatedMessage(params[0], str, 0xFF0033FF, "Ваш личный модер-пароль: {FFFFFF}%s", p_admin_password[params[0]]);
SendFormatedMessage(params[0], str, 0xFF0033FF, "Ваш личный moderID {FFFFFF}%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));
}