Система предназначена для помощи младшей администрации. Игрок в админ чат посылает запрос и высвечивается старшей администрации, одобрить или нет. Делал под себя, так-что измените, что надо. Нам понадобится foreach, Pawn.CMD
В начало мода.
Ко всем командам.PHP код:
const
MAX_BOT_REQUEST = 3, // Максимальное кол-во запросов для бота
MAX_BOT_REQUEST_LENGTH = 8; // Максимальная длина запросов
new
ADMIN_BOT_SUPPORT[MAX_BOT_REQUEST][MAX_BOT_REQUEST_LENGTH] = // Сами запросы
{
"/mute",
"/prison",
"/jail"
},
ADMIN_BOT_TEXT[128]; // Массив с хранением полного запроса (причина/ник)
В OnPlayerKeyStateChangePHP код:
CMD:admin(playerid, params[])
{
if(/*проверка на администратора*/)
{
if(!(0 < strlen(params) < 90))
return SendClientMessage(playerid, -1, !"Используйте больше 1 символа и меньше 90");
new
string[128];
format(string, sizeof(string), "[A] %s [%d]: %s", /*Массив с ником админа*/, playerid, params);
SendAdminMessage(-1, string);
for(new k = MAX_BOT_REQUEST-1; k != -1; k--) // Перебираем все существующие запросы
{
if(strfind(params, ADMIN_BOT_SUPPORT[k], true) != -1) // Смотрим, присутствуют ли в тексте
{
strdel(params, 0, strfind(params, ADMIN_BOT_SUPPORT[k], true)); // Если да, то удаляем всё, до найденного запроса
format(ADMIN_BOT_TEXT, sizeof(ADMIN_BOT_TEXT), "%s // %s", params, /*Массив с ником админа*/); // Сохраним запрос в массив
format(string, sizeof(string), "%s запросил помощь о выдаче наказания. Одобрить Y, отказать N", /*Массив с ником админа*/);
SendAdminMessage(-1 , string); // Отправим текст администраторам.
break; // Обрываем цикл, после найденного запроса.
}
}
}
return 1;
}
alias:admin("a");
В начало мода или ко всем итераторамPHP код:
if(newkeys == KEY_YES) // Если нажали Y
{
if(ADMIN_BOT_TEXT[0] != '\0')
{
if(/*Проверка на администратора*/)
{
PC_EmulateCommand(playerid, ADMIN_BOT_TEXT); // Отправим запрос
ADMIN_BOT_TEXT[0] = EOS; // Обнулим массив.
}
}
}
else if(newkeys == KEY_NO) // Если нажали N
{
if(ADMIN_BOT_TEXT[0] != '\0')
{
if(/*Проверка на администратора*/)
{
new
string[(48 + MAX_PLAYER_NAME + 1) - 2];
format(string, sizeof(string), "[A] Администратор %s отказал в запросе о помощи", /*Массив с ником админа*/);
SendAdminMessage(-1, string);
ADMIN_BOT_TEXT[0] = EOS;
}
}
}
При добавлении/заходе администратораPHP код:
new
Iterator:Connect_Admin<MAX_PLAYERS>; // Итератор , где будем хранить всех администраторов
При выходе/снятии администратораPHP код:
if(!Iter_Contains(Connect_Admin, /*админ*/)) Iter_Add(Connect_Admin, /*админ*/);
Сток для отправки сообщения администраторамPHP код:
if(Iter_Contains(Connect_Admin, /*админ*/)) Iter_Remove(Connect_Admin, /*админ*/);
PHP код:
stock SendAdminMessage(color, const string[])
{
foreach(new i : Connect_Admin)
{
SendClientMessage(i, color, string);
}
return 1;
}
У кого не грузит: https://imgur.com/3mtcRlO
Буду рад увидеть конструктивную критику, а так-же идеи для следующей версии.
Автор: Я