SA-MP Forums Archive
Скрипт "До нового года осталось..." - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Скрипт "До нового года осталось..." (/showthread.php?tid=202099)



Скрипт "До нового года осталось..." - 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

pawn Код:
1293840000 - gettime();



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;
}