Гость stibs

Система статистики администрации.

В теме 9 сообщений

ГОТОВОЕ РЕШЕНИЕ


Всем привет! В одном моде (слитый Sunrise) увидел неплохую системку статистики администрации. Однако, как выяснилось, данная система не была доведена до конца. Т.е. там не было сохранения. Здесь же я его написал. Вы сможете полностью контролировать свою администрацию. Думаю, многим пригодится. В статистику входят: 

  • Статистика онлайна по дня недели (автоматически обнуляется в каждое воскресенье) + норма онлайна, а также общий недельный онлайн. 

Это урезанная версия, убрал из нее много лишнего, как например функция последняя причина наказания. 

Давайте начинать!


Для начала нам нужна бд, куда будет сохраняться онлайн администратора. Прикладываю готовую структуру базы данных для данной системы.

  База данных (открыть спойлер)

Далее нам необходимо переместится в мод, и добавляем в OnGameModeInit обнуление онлайна по окончанию недели. 

if(getDayEx()==2) mysql_tquery(dbHandle, "UPDATE `onlineadm` SET `online_monday`='0',`online_tuesday`='0',`online_wednesday`='0',`online_thursday`='0',`online_friday`='0',`online_saturday`='0',`online_sunday`='0'", "", "");

Теперь делаем команду для просмотра статистики администрирования. 

Ко всем командам:
 

CMD:checkadmstats(playerid, params[])
{
    //проверку на админа
    if(sscanf(params, "s[24]", params[0])) return SendClientMessage(playerid, -1, "Используйте: /checkadmstats [nick]");
    mysql_format(dbHandle, string, sizeof(string), "SELECT * FROM `onlineadm` WHERE `nameadm`='%s' LIMIT 1", params[0]);
    mysql_tquery(dbHandle, string, "OnCheckStatsAdmin", "is", playerid, params[0]);
    SendClientMessage(playerid, -1, "В базу данных запрос успешно отправлен, ожидайте ответа.");
  
    return true;
}

Далее добавляем сам обработчик mysql запроса - OnCheckStatsAdmin:

  Code (открыть спойлер)

Теперь самое главное, чего у этой системы, собственно и не было - Сохранение. 

Ко всем new:

new OnlineDay[MAX_PLAYERS];

Далее в секундный таймер суем:

if(/*проверка на АФК*/ < 3)
{
    OnlineDay[playerid]++;
} // если нет проверки на афк удалите ее и эти две скобки тоже.

После этого добавляем в OnPlayerDisconnect:

  Code (открыть спойлер)

Теперь создадим этот паблик сохранения:
 

  Code (открыть спойлер)

Переделал систему: @stibs.

Автор первоначальной системы (автор мода Sunrise RP) - Serega_Travakur

Отредактировано пользователем stibs

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


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

Если ошибка : undefined symbol getDayEx(), то вставляем в конец мода:

stock getDayEx()
{
    new w = gettime(), saturday = 1310155200, day_week;
	while(w - saturday > 60 * 60 * 24)
    {
        w -= 60 * 60 * 24;
        day_week ++;
    }
    while(day_week >= 7) day_week -= 7;
	return day_week;
}

 

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


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

автора укажите, кто переделывал есть, а автора нет!

Заметка от Гость , создано

Было вырезано из мода (Sunrise RP), а кто автор мода без понятия. Если знаете, можете указать.

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


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

Автор мода Sunrise RPSerega_Travakur

Заметка от Гость , создано

Указал.

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


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

xD импорт нажми ,  с верху, я думаю знаешь где таблицы 

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


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

Как исправить? 

  открыть спойлер

 

if(getDayEx()==2) mysql_tquery(dbHandle, "UPDATE `onlineadm` SET `online_monday`='0',`online_tuesday`='0',`online_wednesday`='0',`online_thursday`='0',`online_friday`='0',`online_saturday`='0',`online_sunday`='0'""""");

 

imag1e.png

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


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

@wert1xxx сток поставь

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


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

получено новое достижение: апнуть тему 5-ти летней давности

Заметка от Cawfee , создано

Устно предупредил – не поняли... В следующий раз поставлю на премодерацию.

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


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

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

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

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

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


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

Войти

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


Войти

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

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

  • Похожий контент

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }  
    • Dev_Persona
      От Dev_Persona
      Приветствую всех, у меня возник такой вопрос:
       
      - хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:
       
      case DIALOG_ADMIN_REG:
         {
          if(!response) return FixKick(playerid);
       
          if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");
                   SetPlayerData(playerid, P_APASS, strval(inputtext));
       
                   UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));
       
                   AdminAuthorization(playerid);
         }