PDA

Просмотр полной версии : [Include] a_timer



XemyL
11.04.2014, 18:32
Этот инклуд добавляет новые функции для работы с таймерами:

TSetTimer(const funcname[], interval, repeating)
TKillTimer(timerid)

С помощью этих функций можно использовать точные таймеры, гораздо точнее стандартных.
* На данный момент самый точный способ использования таймеров;
* UPDATE_TIMERS отвечает за частоту обновления таймеров, т.е. чем это число меньше, тем больше нагрузки и точнее таймеры и наоборот;

Пользоваться этим инклудом очень легко. Всё точно так же как и стандартными таймерами, только для запуска нужно использовать TSetTimer(название функции, время, повторение (0\1)), а для отключения TKillTimer(ID таймера).

Тесты точности таймеров проводились на повторяющемся минутном таймере. В стандартных таймерах при увеличении времени, отклонение так же увеличивалось. С a_timer отклонение будет всегда одинаковое.

Стандартные таймеры: Отклонение 4746-4920 мс (при запуске на 1 мин.)
a_timer: Отклонение 0-250 мс

Внимание! Перед использованием изменить в инклуде параметр MAX_TIMERS на нужное значение!
http://pastebin.com/idUmmFzR

Daniel_Cortez
11.04.2014, 19:13
Что ж, подкину пару-тройку советов по улучшению инклуда:

Сменить название инклуда. Не то, чтобы название инклуда изначально плохое, нет, но всё же давать название с префиксом "a_" - не самая лучшая идея, т.к. это может вызвать путаницу со стандартными инклудами SA:MP.
Помните релиз SA:MP 0.3e ? Да-да, тот самый, в котором по ошибке оказался инклуд a_mysql (догадайтесь, почему) из плагина MySQL от BlueG.


Внимание! Перед использованием изменить в инклуде параметр MAX_TIMERS на нужное значение!
Обычно инклуды создают чисто для того, чтобы подключить и не трогать их. Пользователь не должен видеть их содержимого, чтобы пользоваться ими, а если есть какие-то параметры для инклуда - следует указывать их перед его подключением.
Почему бы не предусмотреть такую возможность? Что-то вроде:


#if !defined MAX_TIMERS // если константа не была объявлена до подключения инклуда -
#define MAX_TIMERS 10 // объявим её со значением по умолчанию
#endif

После этого подключить инклуд можно будет следующим образом:


#define MAX_TIMERS 10
#include <a_timer>

Именно так задаются параметры во многих других инклудах. Один из самых ярких примеров: библиотека YSI.

XemyL
12.04.2014, 00:02
Пользователь не должен видеть их содержимого, чтобы пользоваться ими, а если есть какие-то параметры для инклуда - следует указывать их перед его подключением.
Что за бред? Он пока с pastebin его будет скачивать\копировать уже увидит содержимое, а настройка там в самом верху. Не знаю кем нужно быть чтобы такая настройка была проблемой.

P.S. Почему работу выложил я, а спасибо говорят тебе? :D

Salvacore
12.04.2014, 00:33
Что за бред? Он пока с pastebin его будет скачивать\копировать уже увидит содержимое, а настройка там в самом верху. Не знаю кем нужно быть чтобы такая настройка была проблемой.

P.S. Почему работу выложил я, а спасибо говорят тебе? :D
Что то стоящее нашел в этой теме.