Плагин "отсчета до Нового года" не отображает в худе 1-ю ячейку массива

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
670
Реакции
143
Помог
11 раз(а)
Ошибка
Плагин "отсчета до Нового года" не отображает 1-ю ячейку массива
ОС
Linux
Amx Mod X
1.9
Билд
6153
ReGamedll
-
Версия Metamod
v1.21p38  2018/02/11
Список метамодулей
-
Список плагинов
-
Автор плагина
Leo_[BH] & Re.Act!ve
Версия плагина
1
Исходный код
#include <amxmodx>

#define NEW_YEAR_TIME 1609459200 // date UNIX format // Время нового года в формате UNIX-Time

new const color_hud[3] = { 255, 241, 0 } // Можете задать цвет информера

new const Float:the_x = 0.01
new const Float:the_y = 0.19

// - - - - - - - - - - - - - - - - - - - - - - - -

#define ONEYEAR 31536000
#define ONEMONTH 2592000
#define ONEDAY 86400
#define ONEHOUR 3600
#define TASK_HUD 100

new const nyName[] = "До Нового Года:";
new sDateString[48];
new dateStrFormat[4][3][] = {
{ "год", "года", "лет" }, { "месяц", "месяца", "месяцев" }, { "день", "дня", "дней" }, { "час", "часа", "часов" }
}

public plugin_init() {
register_plugin("2021 timer","1.0","Leo_[BH] & Re.Act!ve");
if(NEW_YEAR_TIME+86400>get_systime())
set_task(4.0, "UpdateHudTask",TASK_HUD,_,_,"b");
else
log_amx("Новый год уже наступил! Плагин отключен.")
}

public UpdateHudTask()
{
date_to_string_format(sDateString, charsmax(sDateString));

if(get_systime() > NEW_YEAR_TIME)
{
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), the_x, the_y, 0, 0.0, 4.1, 0.0, 0.4, -1);
show_hudmessage(0, "С НОВЫМ ГОДОМ!!!");
}
else
{
set_hudmessage(color_hud[0], color_hud[1], color_hud[2], the_x, the_y, 0, 0.0, 4.1, 0.0, 0.4, -1);
show_hudmessage(0, "%s %s", nyName, sDateString);
}
}

public date_to_string_format(string[], len)
{
new dType[4], Float:ny_time = float(NEW_YEAR_TIME-get_systime());
new newString[96], safeString[32];

dType[0] = floatround(ny_time/ONEYEAR, floatround_floor); ny_time-= dType[0]*ONEYEAR // years
dType[1] = floatround(ny_time/ONEMONTH, floatround_floor); ny_time-= dType[1]*ONEMONTH // mounths
dType[2] = floatround(ny_time/ONEDAY, floatround_floor); ny_time-= dType[2]*ONEDAY // days
dType[3] = floatround(ny_time/ONEHOUR, floatround_floor); ny_time-= dType[2]*ONEHOUR // hours and residuum minutes..
for(new i=0;i<4;i++) {
if(dType[i]==0) continue;
if(date_type_counts(dType[i], dateStrFormat[i][0], dateStrFormat[i][1], dateStrFormat[i][2], safeString, charsmax(safeString))==0) safeString="";
else format(newString,charsmax(newString), "%s%s",newString, safeString);
}
return copy(string, len, newString);
}

public date_type_counts(count, eds[], edno[], many[], str_output[], len) {
new strcount[3][32]; copy(strcount[0], 31, eds); copy(strcount[1], 31, edno); copy(strcount[2], 31, many);
new cases[] = {2, 0, 1, 1, 1, 2};
new wType = (count%100>4 && count%100<20) ? 2 : cases[min(count%10, 5)];
formatex(str_output, len, "%d %s ", count, strcount[wType]);
return wType;
}
В этой строке кода:
new dateStrFormat[4][3][] = {
{ "год", "года", "лет" }, { "месяц", "месяца", "месяцев" }, { "день", "дня", "дней" }, { "час", "часа", "часов" }
}

почему-то не отображаются 1-е ячейки массивов в худ сообщении: "год", "месяц", "день", "час". Т.е. на сегодня остался 21 день до НГ, но в худе не выводится это, также не выводится 1 месяц до нг, час и тд., а если будет "осталось 20 дней, 19, 18, ... до нг, то все ок!
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Напоминаем Вам, что темы с проблемами в работе сервера или плагинов, в первую очередь нужны Вам и Вы заинтересованы в том, чтобы предоставить всю необходимую информацию для решения Вашей проблемы.
 
Статус
В этой теме нельзя размещать новые ответы.

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

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