Научить писать в консоль сервера плагин

Сообщения
281
Реакции
196
Помог
1 раз(а)
Суть такая есть плагин сброса статистики, есть команда сброса статистики через ркон
Зада их подружить, пробовал не получается. Прошу помощи.
Для обнуления статистики введите в консоль сервера команду: csstats_remove "all"
Как сделать что эта команда выполнялась в этом плагине 1 числа каждого месяца?

Редактировал строчку
C++:
server_cmd("amx_cvar csstats_remove all")
Не получается.
 

Вложения

Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
CsStats MySQL by SKAJIbnEJIb
в файле csstats_mysql.cfg - есть описание
Код:
// Для обнуления статистики введите в консоль сервера команду: csstats_remove "all или stats"
//    all - очистит всю таблицу, удалит все записи
//    stats - удалит всю статистику игроков, но оставит поинты(anew) или доп.опыт (если у игрока нет поинтов и доп.опыта, то он будет полностью удален из таблицы)
//    army - обнулит статистику, но сохранит опыт арми ранкс, поинты и доп. опыт
3 Янв 2018
Код:
#include <amxmodx>

#define PLUGIN "Stats Auto Reset"
#define AUTHOR "Leo_[BH]"

public plugin_init()
{
    register_plugin(PLUGIN, "1.0", AUTHOR)
 
    new CurDay[4], CurHour[4]
    get_time("%d", CurDay, 3)
    get_time("%H", CurHour, 3)
 
    new day = str_to_num(CurDay)
    new hour = str_to_num(CurHour)
 
    if(day == 1)
    {
        if(hour < 6)
        {
            set_task(1.0, "ClearTopData")
        }    
    }
}

public ClearTopData()
{
-    server_cmd("amx_cvar csstats_remove all")
+    server_cmd("csstats_remove all")
-    server_cmd("echo Stats have been reset")
+    server_cmd("echo Stats has been reset")
    log_amx("Stats have been reset")
}

-///////////////////////////////////////////////////////////
-//                                                         ///
-//         Автор плагина - Leo_[BH]                         ///
-//         http://vk.com/id64427766                         ///
-//         Skype: bcnl_leon                                 ///
-//                                                         ///
-//         Другие мои плагины:                             ///
-//         http://vk.com/cs_rain                             ///
-//                                                         ///
-///////////////////////////////////////////////////////////
Leo_BH Когда английскому обучишься? :pardon:
Когда в английском языке пишется have, а когда has?
 
Последнее редактирование:

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
Не всегда будет приведенный вариант срабатывать. Т.е. команда в любом случае выполнится плагином, но сброс может не произойти, например из-за отсутствия соединения с бд. Необходимо перед сбросом статы в плагине, который занимается этим самым сбросом проверять соединение с бд. В этом примере я это отметил.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Необходимо перед сбросом статы в плагине, который занимается этим самым сбросом проверять соединение с бд
:beee: Нет, необходимо поглядеть API от статы, и найти там форвард инициализации базы, и как раз в нём выполнять проверку по времени, а позже и сброс.
3 Янв 2018
как раз там удачненько расписан данный форвард. Не от большого ума люди нормально API не используют.
Код:
// Вызывается, когда плагин подключился к базе и загрузил статистику
forward csstats_initialized_post(Handle:Tuple)
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
wopox1337, извиняюсь, не знал об api у плагина скальпеля:dntknw:
 
Сообщения
281
Реакции
196
Помог
1 раз(а)
wopox1337, а ты можешь такое реализовать в данном плагине?
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
velesgs, я — могу. Но, ты можешь и сам попробовать эти мелочи заюзать.
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
velesgs, пробовал, чтобы такое утверждать?)
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
velesgs, а ты попробуй. Я подскажу порядок.

В начало файла, после #include <amxmodx> Добавляешь инклуд от статистики скальпеля.
Далее, ту функцию, что я указал выше — вписываешь, в самый низ (вместо forward! Пишешь public blablabla())
И в этой функции, которую ты дописал, уже и делаешь проверку.
 
Сообщения
281
Реакции
196
Помог
1 раз(а)
Хорошо попробую)
4 Янв 2018
C++:
#include <amxmodx>
#include <csstats_mysql>

#define PLUGIN "Stats Auto Reset"
#define AUTHOR "Leo_[BH]"

public plugin_init()
{
    register_plugin(PLUGIN, "1.0", AUTHOR)
    
    new CurDay[4], CurHour[4]
    get_time("%d", CurDay, 3)
    get_time("%H", CurHour, 3)
    
    new day = str_to_num(CurDay)
    new hour = str_to_num(CurHour)
    
    if(day == 1)
    {
        if(hour < 6)
        {
            set_task(1.0, "ClearTopData")
        }       
    }
}

public ClearTopData()
{
    server_cmd("amx_cvar csstats_reset 1")
    server_cmd("echo Stats have been reset")
    log_amx("Stats have been reset")
}

public csstats_initialized_post(Handle:Tuple)
4 Янв 2018
по идее дальше должен быть запрос к бд, жива она или нет? как это реализовать?
4 Янв 2018
В идеаел спросила жива база делаем запрос на сброс, мертва пишем в лог здохла и ставим на паузу плагин)
Был бы идеал)
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Код:
#include <amxmodx>
#include <csstats_mysql>

const DAY = 1;
const HOUR = 6;

public plugin_init()
    register_plugin("ResetStats", "1.0", "SomeScripter");

public csstats_initialized_post()
{
    new CurDay[4], CurHour[4];
    get_time("%d", CurDay, charsmax(CurDay));
    get_time("%H", CurHour, charsmax(CurHour));

    if(str_to_num(CurDay) == DAY)
    {
        if(str_to_num(CurHour) < HOUR)
            ClearTopData();
    }
}

public ClearTopData()
{
    server_cmd("csstats_remove all");
    server_cmd("echo Stats has been reset");
    log_amx("Stats has been reset");
}
 
Сообщения
281
Реакции
196
Помог
1 раз(а)
wopox1337, хм... да уж далек я от этого) спасибо огромное.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу