PDA

Просмотр полной версии : [Вопрос] Вновь таймера



X!X
22.06.2018, 16:49
Цитирую модератора этого форума DeimoS'a - "Если таймеры отстают, значит есть код, который обрабатывается слишком долго, создавая задержки. И делая таймер на 250 мс, ты не исправляешь проблему, а лишь усугубляешь, создавая большую нагрузку. Если хочешь сделать правильно - займись оптимизацией.
А лучше вообще понять: так ли важно, что таймер будет отставать на пару секунд. На деле игрок этого и не заметит.".
Дело в том, что даже обычный секундный глобальный таймер у меня пока не используется и создан просто так с перезапуском таймера. И он отстает на 2 секунды. Так в чем же проблема и как решить на стороне кода не приписывая дополнительных плагинов?

StevenH
22.06.2018, 20:05
Прям на 2 секунды отстает? Код бы в таком случае))

Daniel_Cortez
22.06.2018, 20:12
Никак, таймеры в SA-MP сами по себе не очень точные.

Есть несколько плагинов, которые предоставляют более точные реализации таймеров - вот первый, который удалось найти на оффе: http://forum.sa-mp.com/showthread.php?t=650736

X!X
22.06.2018, 20:21
Прям на 2 секунды отстает? Код бы в таком случае))
Не всегда отстает, а раз через три, пять.

Код:

SetTimer(!"@OneSecTimer", 1000, false);
@OneSecTimer();
@OneSecTimer()
{
SetTimer(!"@OneSecTimer", 1000, false);
return 1;
}

- - - Добавлено - - -


Никак, таймеры в SA-MP сами по себе не очень точные.

Есть несколько плагинов, которые предоставляют более точные реализации таймеров - вот первый, который удалось найти на оффе: http://forum.sa-mp.com/showthread.php?t=650736

Я вообще боюсь использовать эти сторонние какие-то плагины, вдруг что все полетит:blush2:

VVWVV
22.06.2018, 20:28
Не всегда отстает, а раз через три, пять.

Код:

SetTimer(!"@OneSecTimer", 1000, false);
@OneSecTimer();
@OneSecTimer()
{
SetTimer(!"@OneSecTimer", 1000, false);
return 1;
}

- - - Добавлено - - -



Я вообще боюсь использовать эти сторонние какие-то плагины, вдруг что все полетит:blush2:

Нет, ничего не полетит, вы можете использовать данные плагины на всех версиях, в которых доступны функции SetTimer, SetTimerEx и т.п. Он использует стандартные функции из стандартной библиотеки C++. Тем более, не использует перехват функций и т.п. Он лишь в интерпретаторе заменяет адреса оригинальных функций SetTimer, SetTimerEx и др. на собственные. Кстати, этот вариант намного лучше, поскольку автор всегда может пофиксить любые баги (это же не Kalcor).

X!X
22.06.2018, 20:49
Нет, ничего не полетит, вы можете использовать данные плагины на всех версиях, в которых доступны функции SetTimer, SetTimerEx и т.п. Он использует стандартные функции из стандартной библиотеки C++. Тем более, не использует перехват функций и т.п. Он лишь в интерпретаторе заменяет адреса оригинальных функций SetTimer, SetTimerEx и др. на собственные. Кстати, этот вариант намного лучше, поскольку автор всегда может пофиксить любые баги (это же не Kalcor).
Успокоил, поставлю:good:
Тему можно закрывать, всем спасибо!