Остановка секундомеров, таймеров и других задач.
Инфо из amxmodx.inc:
/* Removes all tasks with given id. If outside var is
* set then a task can be removed also when
* was set in another plugin. */
native remove_task(id = 0, outside = 0);
Синтаксис:
remove_task ( id = 0, outside = 0)
- id = 0 - id задачи которую нужно прекратить (в плагине, где находится функция)
- outside = 0 - id задачи которую нужно прекратить (в других плагинах на сервере)
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Remove task"
#define VERSION "1.0"
#define AUTHOR "Admin"
new sec
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("set-task","set")
register_concmd("remove-task","remove")
}
public set(){
set_task(1.0,"demo_time",1,_,_,"b")
set_task(1.0,"demo_non_stop_time",2,_,_,"b")
}
public remove(){
remove_task(1)
sec = 0
}
public demo_time(){
sec++
server_print("[Demo task run] Time: %d",sec)
}
public demo_non_stop_time(){
server_print("[Demo non stop]")
}
Описание:
Данная функция бесполезна, если вы не знаете функцию set_task. Знаете или уже прочитали?
Значит объяснения как работает данный пример будет для вас повторением.
Весь пример так же работает в консоли сервера.
- set-task - Запускает задание (бесконечное) с идентификатором 1
- remove-task - Останавливает задачу с идентификатором 1
Но мы запустили сразу 2 задачи, а остановили только одну.
Вторая будет продолжать работать до смены карты.
Это специально для того что бы вы поняли как работать с идентификаторами задач.
Внимание:
Функция remove_task внутри себя уже содержит проверку аналогичную task_exists .
этого не стоит делать, вызовется 2 раза проверка, так как в нативной функции
уже встроена проверка на наличия task`a