Скрипт "До нового года осталось..."
#1

На многих сайтах, если вы заметили, стоят скрипты с обратным отсчётом до Нового Года. И вот возникла идея сделать такое же и для samp, скажем, вместо названия мода или карты. Возможно, такое уже есть где-то в интернете, но я ничего подобного не нашёл.
Первое, что нужно сделать - это установить ежесекундную смену имени мода/карты
Далее - установить отсчёт
Я пытался сделать такое, но ничего не вышло и надеюсь, что мы решим это вместе, к тому же, это будет полезно не только мне, а и владельцам серверов, которые посещают русский форум sa-mp.com.

Если возникнет вопрос "Как вместить текст с таймером в ту строчку", то с этим всё просто, текст в названии мода (статический), а отсчёт вместо названия карты, или наоборот.
Reply
#2

Просто всё дело ещё в том, что я не знаю, как сделать динамическое название мода
Reply
#3

вычисляешь UNIX_TIME_NY для даты нового года 00:00:00 01.01.2011 (любой поисковик поможет)
отслеживаешь UNIX_TIME_CURRENT на данный момент gettime()
берешь разницу UNIX_TIME_NY - UNIX_TIME_CURRENT = REMAINING_DAYS
преобразуешь REMAINING_DAYS в в какой хочешь формат

и ничего сложного
Reply
#4

Quote:
Originally Posted by K-911
Посмотреть сообщение
Просто всё дело ещё в том, что я не знаю, как сделать динамическое название мода
Код:
SendRconCommand("hostname текст");
Reply
#5

Честно говоря, про UNIX_TIME_* и REMAINING_DAYS я не знаю ничего, а в поисковиках ничего не находит. Можно немного подробнее?
Reply
#6

http://unixtime-converter.com/ - тебе нужна вторая форма, прописываешь дату нового года, нажимаешь Convert, тебе вернется метка нового года.
https://sampwiki.blast.hk/wiki/Gettime
new Seconds = gettime(); - в переменную Seconds запишеться метка реального времени
банальным вычитанием из метки НГ метки реального времени ты получишь количество секунд оставшихся до нового года.
Дальше идут банальные преобразования количества секунд в дни, часы, минуты и секунды.

Если математику в школе изучал разберешься.
Reply
#7

Я то разобрался, но не понял, как отнять Seconds от метки НГ, я просто уже давно скриптингом не занимался, забыл многое, пытался сделать так:
pawn Код:
SendRconCommand("hostname %d", 1293840000 - Seconds); - тупой, но пробный вариант :)
pawn Код:
new Float:NY;
(NY = 1293840000);
SendRconCommand("hostname %d", NY - Seconds);
Может подскажешь этот шаг?)
P.S. 1293840000 - метка НГ

И ещё такой вопрос: Это в OnGameModeInt вписывать?
Reply
#8

pawn Код:
1293840000 - gettime();
Reply
#9

Перепробовал всё, что возможно... ну ладно, не судьба значит, переживу
Reply
#10

Это-же элементарно, вот за пару мин набросал.

Код:
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;
}
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)