Проверенный
Участник
Пользователь
d3m37r4
111111
- Сообщения
- 1,454
- Реакции
- 1,194
- Помог
- 10 раз(а)
Пока по-немногу изучаю Pawn, проникся идеей написать плагин автоматического сброса статистики через определенное количество месяцев в определенный день (в сети нашел только плагины сброса каждые n дней и сброс каждый месяц в определенный день). Проверку на сброс подсмотрел в csstats sql, за что автору плагина спасибо.
Получилось то, что представлено ниже под спойлером:
Перемудрил с условиями и запутался, не могу решить проблему со счетчиком проверок. Дело в том, что в день сброса статы, если карта меняется более одного раза, счетчик крутится и при AUTORESET_COUNT 2 за три смены карты уже сбрасывается стата.
Возможно ли как-то решить данную проблему?
UPD. Пока писал первый пост, возникла идея, в определенный промежуток времени, например с 00ч:00 до 02ч:00 запускать таск и проверять минуты, и в определеное время чч:мм делать сброс, а после убирать таск, до следующего дня сброса. Сильно ли это будет грузить сервер? Возможны ли другие способы решения задачи?
Получилось то, что представлено ниже под спойлером:
Код:
#include <amxmodx>
#define AUTORESET_DAY 2 // Какого числа делать сброс статистики.
#define AUTORESET_COUNT 2 // Число проверок (через сколько месяцев делать сброс статистики).
// Напр.: если 2, то проверяется первый месяц, второй, и на третий уже сброс.
public plugin_init() {
AutoStatsReset()
}
public AutoStatsReset() {
new szData[10], szCount[10]
get_time("%d", szData, charsmax(szData))
if(str_to_num(szData) == AUTORESET_DAY) {
szData[0] = 0
get_vaultdata("stats_clear", szData, charsmax(szData))
get_vaultdata("stats_count", szCount, charsmax(szCount))
new count = str_to_num(szCount)
if(!str_to_num(szData) && count == AUTORESET_COUNT) {
szCount[0] = 0
set_vaultdata("stats_clear", "1")
set_vaultdata("stats_count", "0")
// тут команда для очистки статистики
log_amx("Статистика сброшена, спустя %d мес.", count)
} else {
count ++
num_to_str(count, szCount, charsmax(szCount))
set_vaultdata("stats_clear","0")
set_vaultdata("stats_count", szCount)
log_amx("Статистика будет сброшена через %d мес.", AUTORESET_COUNT - count)
}
}
}
Перемудрил с условиями и запутался, не могу решить проблему со счетчиком проверок. Дело в том, что в день сброса статы, если карта меняется более одного раза, счетчик крутится и при AUTORESET_COUNT 2 за три смены карты уже сбрасывается стата.
Возможно ли как-то решить данную проблему?
2 Апр 2017