ThePhoenix
Участник
- Сообщения
- 29
- Реакции
- 1
- Баллы
- 3
Тук тук. Никто не сможет объяснить, почему в плагине не выводятся одинички? (1 день, месяц и т.д.)
т.е считывать, оно считывает, для работы, а в худ, когда дело доходит выводить, то пусто. Любые значения, кроме 1 нормально работают.
т.е считывать, оно считывает, для работы, а в худ, когда дело доходит выводить, то пусто. Любые значения, кроме 1 нормально работают.
Код:
#include <amxmodx>
// - - - - - - - - - - - - - - - - - - - - - - - -
#define TIMER 1627480440 // date UNIX format // Время нового года в формате UNIX-Time
new const color_hud[3] = { 0, 255, 0 } // цвет информера
new const Float:the_x = -1.0 // позиция по X
new const Float:the_y = 0.05 // позиция по Y
new const Float:upd = 5.0 // частота обновлений худа
new const Float:upd2 = 5.1 // время показана худа, должно быть больше, чем частота обновлений, чтобы всегда было на экране и обновлялось только
// - - - - - - - - - - - - - - - - - - - - - - - -
#define ONEYEAR 31536000
#define ONEMONTH 2592000
#define ONEDAY 86400
#define ONEHOUR 3600
#define ONEMINUTE 60
#define ONESECOND 1
#define TASK_HUD 576
new sDateString[112];
new dateStrFormat[6][3][] = {
{ "год", "года", "лет" }, { "месяц", "месяца", "месяцев" }, { "день", "дня", "дней" }, { "час", "часа", "часов" }, { "минута", "минуты", "минут" }, { "секунда", "секунды", "секунд" }
}
public plugin_init() {
if(TIMER+3600>get_systime())
set_task(upd, "UpdateHudTask",TASK_HUD,_,_,"b");
else
log_amx("Таймер закончился -> Плагин отключен!");
}
public UpdateHudTask()
{
date_to_string_format(sDateString, charsmax(sDateString));
log_amx("%s", sDateString);
if(get_systime() > TIMER)
{
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), the_x, the_y, 0, 0.0, 5.1, 0.0, 0.4, -1);
show_hudmessage(0, "Время до розыгрыша вышло!");
}
else
{
new Float:new_time = float(TIMER-get_systime());
new Float:plusday = new_time / float(ONEDAY);
if(plusday > 1.0 && plusday < 2.0)
{
set_hudmessage(color_hud[0], color_hud[1], color_hud[2], the_x, the_y, 0, 0.0, upd2, 0.0, 0.4, -1);
show_hudmessage(0, "До розыгрыша остался^n1 день %s^n^nПоторопитесь!", sDateString);
}
else
{
set_hudmessage(color_hud[0], color_hud[1], color_hud[2], the_x, the_y, 0, 0.0, upd2, 0.0, 0.4, -1);
show_hudmessage(0, "До розыгрыша осталось^n%s^n^nПоторопитесь!", sDateString);
}
}
}
public date_to_string_format(string[], len)
{
new Float:time = float(TIMER-get_systime());
new Float:wday = time / ONEDAY;
new Float:whour = time / ONEHOUR;
if(wday > 1)
{
new newString[256], safeString[112], dType[5];
dType[0] = floatround(time/ONEYEAR, floatround_floor); time-= dType[0]*ONEYEAR // years
dType[1] = floatround(time/ONEMONTH, floatround_floor); time-= dType[1]*ONEMONTH // mounths
dType[2] = floatround(time/ONEDAY, floatround_floor); time-= dType[2]*ONEDAY // days
dType[3] = floatround(time/ONEHOUR, floatround_floor); time-= dType[3]*ONEHOUR // hours
dType[4] = floatround(time/ONEMINUTE, floatround_floor); time-= dType[4]*ONEMINUTE // minutes
for(new i=0;i<5;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);
}
log_amx("wday > 1");
return copy(string, len, newString);
}
else
{
if(whour > 1)
{
new newString3[256], safeString3[112], datatype2[5];
datatype2[0] = floatround(time/ONEYEAR, floatround_floor); time-= datatype2[0]*ONEYEAR // years
datatype2[1] = floatround(time/ONEMONTH, floatround_floor); time-= datatype2[1]*ONEMONTH // mounths
datatype2[2] = floatround(time/ONEDAY, floatround_floor); time-= datatype2[2]*ONEDAY // days
datatype2[3] = floatround(time/ONEHOUR, floatround_floor); time-= datatype2[3]*ONEHOUR // hours
datatype2[4] = floatround(time/ONEMINUTE, floatround_floor); time-= datatype2[4]*ONEMINUTE // minutes
for(new i=0;i<5;i++) {
if(datatype2[i]==0) continue;
if(date_type_counts(datatype2[i], dateStrFormat[i][0], dateStrFormat[i][1], dateStrFormat[i][2], safeString3, charsmax(safeString3))==0) safeString3="";
else format(newString3,charsmax(newString3), "%s%s",newString3, safeString3);
}
log_amx("whour > 1");
return copy(string, len, newString3);
}
else
{
new newString2[256], safeString2[112], datatype[6];
datatype[0] = floatround(time/ONEYEAR, floatround_floor); time-= datatype[0]*ONEYEAR // years
datatype[1] = floatround(time/ONEMONTH, floatround_floor); time-= datatype[1]*ONEMONTH // mounths
datatype[2] = floatround(time/ONEDAY, floatround_floor); time-= datatype[2]*ONEDAY // days
datatype[3] = floatround(time/ONEHOUR, floatround_floor); time-= datatype[3]*ONEHOUR // hours
datatype[4] = floatround(time/ONEMINUTE, floatround_floor); time-= datatype[4]*ONEMINUTE // minutes
datatype[5] = floatround(time/ONESECOND, floatround_floor); time-= datatype[5]*ONESECOND // sec
for(new i=0;i<6;i++) {
if(datatype[i]==0) continue;
if(date_type_counts(datatype[i], dateStrFormat[i][0], dateStrFormat[i][1], dateStrFormat[i][2], safeString2, charsmax(safeString2))==0) safeString2="";
else format(newString2,charsmax(newString2), "%s%s",newString2, safeString2);
}
log_amx("whour < 1");
return copy(string, len, newString2);
}
}
}
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;
}
Последнее редактирование: