_D4RK_
Дебютант
Всех приветствую, сегодня мы напишем статистику для администраторов, именно, она будет подсчитывать на сколько репортов ответил администратор, сколько людей забанил, заварнил, кикнул, замутил. Данная система будет полезна для RP-серверов , чтобы повышать администрацию.
На самом деле, команды мы сделаем даже две.
- /ainfo (Просмотреть свою админ-статистику.)
- /checkainfo (Просмотреть чужую админ-статистику.)
Для начала в базе данных, создадим в таблице аккаунтов новые столбцы:
Именно в этих 5-и столбцах будут хранится кол-во ответов на репорт/банов/варнов/мутов/киков.
Каждый столбец будет хранить отдельную информацию:
arep - Ответы на репорт.
aban - кол-во банов.
awarn - кол-во варнов.
akick - кол-во киков.
amute - кол-во мутов.
Сделали? - Отлично! Теперь перейдем в PAWNO и сделаем несколько действий:
Ищем в своем моде enum с столбцами аккаунтов , обычно они называются pData, pInfo, pAccs, и т.д.
И туда в конец добавляем:
Вот тут обязательно столбец должен начинать с "p" а далее , уже неважно.
Далее , ищем место , где идет загрузка данных из базы данных , обычно это идет после авторизации.
И добавляем туда:
"pARep/Ban/Kick/Warn/Mute" меняем на то, что мы писали в enum , в прошлом шаге.
"arep/ban/kick/warn/mute" меняем на то, какое название мы писали при создании столбцов базы данных (в 1-м шаге).
Далее ко всем стокам добавляем:
Теперь , в конце каждой команды добавляем:
Но, в каждой команде меняем "pABan", например: в команде кик "pAKick" , в комнде мут "pAMute" и т.д (С "aban" тоже самое)
И, последний шаг. Создаем сами команды.
На самом деле, команды мы сделаем даже две.
- /ainfo (Просмотреть свою админ-статистику.)
- /checkainfo (Просмотреть чужую админ-статистику.)
Для начала в базе данных, создадим в таблице аккаунтов новые столбцы:
PHP:
arep , aban , awarn , akick , amute
Каждый столбец будет хранить отдельную информацию:
arep - Ответы на репорт.
aban - кол-во банов.
awarn - кол-во варнов.
akick - кол-во киков.
amute - кол-во мутов.
Сделали? - Отлично! Теперь перейдем в PAWNO и сделаем несколько действий:
Ищем в своем моде enum с столбцами аккаунтов , обычно они называются pData, pInfo, pAccs, и т.д.
И туда в конец добавляем:
PHP:
pARep,
pABan,
pAWarn,
pAKick,
pAMute
Далее , ищем место , где идет загрузка данных из базы данных , обычно это идет после авторизации.
И добавляем туда:
PHP:
pData[playerid][pARep] = sql_get_field_assoc_int_ex(pldata, 0, "arep");
pData[playerid][pABan] = sql_get_field_assoc_int_ex(pldata, 0, "aban");
pData[playerid][pAKick] = sql_get_field_assoc_int_ex(pldata, 0, "akick");
pData[playerid][pAWarn] = sql_get_field_assoc_int_ex(pldata, 0, "awarn");
pData[playerid][pAMute] = sql_get_field_assoc_int_ex(pldata, 0, "amute");
"arep/ban/kick/warn/mute" меняем на то, какое название мы писали при создании столбцов базы данных (в 1-м шаге).
Далее ко всем стокам добавляем:
PHP:
stock UpdatePlayerData(playerid,field[],data)
{
new query[256];
format(query,sizeof(query),"UPDATE `aplayerakk` SET `%s` = '%d' WHERE `id` = '%d'",field,data,pData[playerid][pMysqlID]);
sql_query(snow, query, QUERY_THREADED);
return 1;
}
PHP:
pData[playerid][pABan] += 1;
UpdatePlayerData(playerid,"aban",pData[playerid][pABan]);
И, последний шаг. Создаем сами команды.
PHP:
if(!strcmp(cmd,"/checkainfo",true))
{
if(pData[playerid][pAdmin] < 8) return true; // Проверка на админа
if(admloged[playerid] == 0) // Проверка авторизован ли администратор (можете удалить)
{
Adminlogin(playerid);
return true;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GREY, "/checkainfo (ID - игрока)"); // Проверка введен ли ID
new id = strval(tmp);
if(!IsPlayerConnected(id) || IsKicked(id)) return SendClientMessage(playerid,CGRAY,"Неверный ID"); // Проверка подключен ли введенный ID
if(pData[id][pAdmin] < 1) return SendClientMessage(playerid, COLOR_GREY, "Введенный Вами ID не администратор!"); // Проверка администратор ли введенный ID
new string[500];
format(string, sizeof(string), "Ник: %s\nВаш админ-уровень: %d\n\nВсего ответов на репорт: %d\nВсего банов: %d\nВсего варнов: %d\nВсего киков: %d\nВсего мутов: %d", pData[id][pNickname], pData[id][pAdmin], pData[id][pARep], pData[id][pABan], pData[id][pAWarn], pData[id][pAKick], pData[id][pAMute]); // Записывание текста диалога в string
ShowPlayerDialog(playerid,dAInfo,DIALOG_STYLE_MSGBOX, "Админ-статистика", string, "Принять", ""); // Сам диалог
return true;
}
if(!strcmp(cmd,"/ainfo",true))
{
if(pData[playerid][pAdmin] < 0) return true; // Проверка на админа
if(admloged[playerid] == 0) // Проверка залогинен ли админ
{
Adminlogin(playerid);
return true;
}
new string[500];
format(string, sizeof(string), "Ваш ник: %s\nВаш адм-уровень: %d\n\nВсего ответов на репорт: %d\nВсего банов: %d\nВсего варнов: %d\nВсего киков: %d\nВсего мутов: %d\n\n{ff0000}ВАЖНО: Если статистика не обновляется, \nперезайдите на сервер.", pData[playerid][pNickname], pData[playerid][pAdmin], pData[playerid][pARep], pData[playerid][pABan], pData[playerid][pAWarn], pData[playerid][pAKick], pData[playerid][pAMute]); // Записывание текста диалога в string
ShowPlayerDialog(playerid,dAInfo,DIALOG_STYLE_MSGBOX, "Админ-статистика", string, "Принять", ""); // Сам диалог
return true;
}
Последнее редактирование модератором:
