Перейти к содержанию
Авторизация  
Maks_Pilipenko

Статистика администратора

Рекомендуемые сообщения

Maks_Pilipenko

Здравствуйте гости и пользователи cr-mp.ru.
В этой теме, я расскажу как сделать статистику администраторов за всё проведенное время. Знаю что уже есть множество похожих тем, но может кому-нибудь пригодится и мой вариант. Именно я пытался сделать по примерам, которые 'висят в всемирной паутине', но почему-то вечно были варнинги и ошибки (видимо руки были кривые, т.к давно пытался biggrin.gif ). Так вот недавно вспомнил и решил сделать.
Приступим.

 

К enum pInfo в самый конец добавляем

pPayDayAdmin, // сколько отыграл часов администратор
pAreport, // сколько раз администратор ответил на репорт (/pm)
pAban, // сколько раз администратор забанил (/ban)
pAwarn, // сколько раз администратор заварнил (/warn)
pAkick,  // сколько раз администратор кикнул (/kick)
pAmute, // сколько раз администратор заткнул (/mute)

Теперь ищем public OnPlayerConnect(playerid), в нём находим что то вроде этого PlayerInfo[playerid][pSex] = 1; и после его вставляем эти строки:

PlayerInfo[playerid][pPayDayAdmin] = 0; // при спавне, администратору присваивается 0 часов отыгровки.
PlayerInfo[playerid][pAreport] = 0; // при спавне, администратору присваивается 0 ответов на репорт.
PlayerInfo[playerid][pAban] = 0; // при спавне, администратору присваивается 0 банов.
PlayerInfo[playerid][pAwarn] = 0; // при спавне, администратору присваивается 0 варнов.
PlayerInfo[playerid][pAkick] = 0; // при спавне, администратору присваивается 0 киков.
PlayerInfo[playerid][pAmute] = 0; // при спавне, администратору присваивается 0 мутов.

Теперь нужно чтобы наше значение сохранялось, для этого нажимаем сочетание клавиш CTRL+F и ищем эти строки(проще говоря, сис-му сохранения аккаунтов): 

ini_setInteger(File,"
ini_getInteger(File,"

и дописываем в конец строк с ini_setInteger это:

ini_setInteger(File,"pPayDayAdmin",PlayerInfo[playerid][pPayDayAdmin]);
ini_setInteger(File,"pAreport",PlayerInfo[playerid][pAreport]);
ini_setInteger(File,"pAban",PlayerInfo[playerid][pAban]);
ini_setInteger(File,"pAwarn",PlayerInfo[playerid][pAwarn]);
ini_setInteger(File,"pAkick",PlayerInfo[playerid][pAkick]);
ini_setInteger(File,"pAmute",PlayerInfo[playerid][pAmute]);

и в конец строк с ini_getInteger это:

ini_getInteger(File,"pPayDayAdmin",PlayerInfo[playerid][pPayDayAdmin]);
ini_getInteger(File,"pAreport",PlayerInfo[playerid][pAreport]);
ini_getInteger(File,"pAban",PlayerInfo[playerid][pAban]);
ini_getInteger(File,"pAwarn",PlayerInfo[playerid][pAwarn]);
ini_getInteger(File,"pAkick",PlayerInfo[playerid][pAkick]);
ini_getInteger(File,"pAmute",PlayerInfo[playerid][pAmute]);

Так.. Теперь вам нужно найти 'систему' вашего payday. Т.к в модах разные сис-мы payday, советую тупо подождать payday на вашем сервере(моде), найти какую-нибудь строку, и найти её в моде через CTRL+F, к примеру "Чек банка SA" и где нибудь впихнуть это:

PlayerInfo[playerid][pPayDayAdmin] += 1; // когда наступает payday, администратору начисляется 1 час отыгровки

Теперь ищем команду /pm (ответа на репорт), и в нее добавляем это:

PlayerInfo[playerid][pAreport] += 1;

Теперь ищем команду /ban (бан игрока), и в нее добавляем это:

PlayerInfo[playerid][pAban] += 1;

Теперь ищем команду /warn (варн игрока), и в нее добавляем это:

PlayerInfo[playerid][pAwarn] += 1;

Теперь ищем команду /kick (кик игрока), и в нее добавляем это:

PlayerInfo[playerid][pAkick] += 1;

Теперь ищем команду /mute (мут игрока), и в нее добавляем это: (если у вас одной командой давать мут [/mute] и ей же снимать мут, не бойтесь, засчитываться будет только тогда, когда администратор дал мут)

PlayerInfo[playerid][pAmute] += 1;

Ну и последним действием будет сама команда. Добавляем ее ко всем командам:

if(strcmp(cmd, "/as", true) == 0 || strcmp(cmd, "/adminstats", true) == 0)
    {
          if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_WHITE, "Вы не администратор");
          {
                new str[1500],sctring[1500];
                GetPlayerName(playerid, sendername, sizeof(sendername));
                format(str,sizeof(str),"{73B461}<< {FFFFFF} Статистика администратора - {B22222}%s {73B461}>>\n\n",sendername);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Проиграно: {B83434}[%d час(ов)]\n",PlayerInfo[playerid][pPayDayAdmin]);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Ответил на репорт: {B83434}[%d раз]\n",PlayerInfo[playerid][pAreport]);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Забанил: {B83434}[%d раз]\n",PlayerInfo[playerid][pAban]);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Заварнил: {B83434}[%d раз]\n",PlayerInfo[playerid][pAwarn]);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Кикнул: {B83434}[%d раз]\n",PlayerInfo[playerid][pAkick]);
                strcat(sctring,str);
                format(str,sizeof(str),"{FFFFFF}Заткнул: {B83434}[%d раз]\n",PlayerInfo[playerid][pAmute]);
                strcat(sctring,str);
        SPD(playerid,5052,0,"Статистика",sctring, "Ок", "");
      }
          return true;
        }

Вот и всё. Надеюсь кому-нибудь это пригодится.

 

ULEk0qm.jpg

Изменено пользователем Maks_Pilipenko
  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web

Не универсальное решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vadim_v_tapkah

У меня вот такая ошибка помогите пожалуйста!!

C:\Users\Vadim\Desktop\Russian gaming mod Role Play ( RGM Role Play ). ( ??????? ??????? ??? )\gamemodes\RGM.pwn(2053) : error 017: undefined symbol "sendername"
C:\Users\Vadim\Desktop\Russian gaming mod Role Play ( RGM Role Play ). ( ??????? ??????? ??? )\gamemodes\RGM.pwn(2053) : error 017: undefined symbol "sendername"
C:\Users\Vadim\Desktop\Russian gaming mod Role Play ( RGM Role Play ). ( ??????? ??????? ??? )\gamemodes\RGM.pwn(2053) : error 029: invalid expression, assumed zero

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vadim_v_tapkah

Подскажите а как теперь сделать так чтобы не себя мог проверять а других админов?Ато когда я вожу команды пишит токо мою статистику.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Na'Vi

Кто автор данного скрипта

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

Ошибки (мод астера,что бы сразу знали)

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(1778) : warning 202: number of arguments does not match definition
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6864) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6865) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6866) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6867) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6868) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6875) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6876) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6877) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6878) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(6879) : error 035: argument type mismatch (argument 3)
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25216) : error 017: undefined symbol "playerid"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(33617) : error 017: undefined symbol "sendername"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(33617) : error 017: undefined symbol "sendername"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(33617) : error 029: invalid expression, assumed zero
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(33617) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


16 Errors.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Сюда 

 

new str[1500],sctring[1500];
                GetPlayerName(playerid, sendername, sizeof(sendername));

Добавьте до

new str[1500],sctring[1500],sendername[32];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

На SPD ругаться будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web

Если астера, то достаточно вызывать функцию gn(playerid) для получения никнейма.

Изменено пользователем Веб

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

А к примеру как я понимаю это видет свою просто статистику администратор,а как к примеру сделать что бы мог смотреть статистику всех администраторов только выше 10 лвл админ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.