Скрипт "До нового года осталось..." -
K-911 - 23.12.2010
На многих сайтах, если вы заметили, стоят скрипты с обратным отсчётом до Нового Года. И вот возникла идея сделать такое же и для samp, скажем, вместо названия мода или карты. Возможно, такое уже есть где-то в интернете, но я ничего подобного не нашёл.
Первое, что нужно сделать - это установить ежесекундную смену имени мода/карты
Далее - установить отсчёт
Я пытался сделать такое, но ничего не вышло и надеюсь, что мы решим это вместе, к тому же, это будет полезно не только мне, а и владельцам серверов, которые посещают русский форум sa-mp.com.
Если возникнет вопрос "Как вместить текст с таймером в ту строчку", то с этим всё просто, текст в названии мода (статический), а отсчёт вместо названия карты, или наоборот.
Re: Скрипт "До нового года осталось..." -
K-911 - 23.12.2010
Просто всё дело ещё в том, что я не знаю, как сделать динамическое название мода
Re: Скрипт "До нового года осталось..." -
Stepashka - 23.12.2010
вычисляешь UNIX_TIME_NY для даты нового года 00:00:00 01.01.2011 (любой поисковик поможет)
отслеживаешь UNIX_TIME_CURRENT на данный момент gettime()
берешь разницу UNIX_TIME_NY - UNIX_TIME_CURRENT = REMAINING_DAYS
преобразуешь REMAINING_DAYS в в какой хочешь формат
и ничего сложного
Re: Скрипт "До нового года осталось..." -
Makar93 - 23.12.2010
Quote:
Originally Posted by K-911
Просто всё дело ещё в том, что я не знаю, как сделать динамическое название мода
|
Код:
SendRconCommand("hostname текст");
Re: Скрипт "До нового года осталось..." -
K-911 - 23.12.2010
Честно говоря, про UNIX_TIME_* и REMAINING_DAYS я не знаю ничего, а в поисковиках ничего не находит. Можно немного подробнее?
Re: Скрипт "До нового года осталось..." -
Stepashka - 23.12.2010
http://unixtime-converter.com/ - тебе нужна вторая форма, прописываешь дату нового года, нажимаешь Convert, тебе вернется метка нового года.
https://sampwiki.blast.hk/wiki/Gettime
new Seconds = gettime(); - в переменную Seconds запишеться метка реального времени
банальным вычитанием из метки НГ метки реального времени ты получишь количество секунд оставшихся до нового года.
Дальше идут банальные преобразования количества секунд в дни, часы, минуты и секунды.
Если математику в школе изучал разберешься.
Re: Скрипт "До нового года осталось..." -
K-911 - 23.12.2010
Я то разобрался, но не понял, как отнять Seconds от метки НГ, я просто уже давно скриптингом не занимался, забыл многое, пытался сделать так:
pawn Код:
SendRconCommand("hostname %d", 1293840000 - Seconds); - тупой, но пробный вариант :)
pawn Код:
new Float:NY;
(NY = 1293840000);
SendRconCommand("hostname %d", NY - Seconds);
Может подскажешь этот шаг?)
P.S. 1293840000 - метка НГ
И ещё такой вопрос: Это в OnGameModeInt вписывать?
Re: Скрипт "До нового года осталось..." -
Stepashka - 23.12.2010
Re: Скрипт "До нового года осталось..." -
K-911 - 23.12.2010
Перепробовал всё, что возможно... ну ладно, не судьба значит, переживу
Re: Скрипт "До нового года осталось..." -
-Stranger- - 23.12.2010
Это-же элементарно, вот за пару мин набросал.
Код:
new seconds;
new TimerNewYear;
new msg[max_line];
forward NewYear();
public OnFilterScriptInit()
{
seconds = 1293840000 - gettime();
TimerNewYear = SetTimer("NewYear",1000,1);
return 1;
}
public OnFilterScriptExit()
{
KillTimer(TimerNewYear);
return 1;
}
public NewYear()
{
seconds--;
format(msg,max_line,"hostname %d",seconds);
SendRconCommand(msg);
return 1;
}