Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 7
    Гостей: 5
    Пользователи: byantopo6633
    Роботы: crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 4-09-2011, 01:12 Просмотров: 6453

    remove_task Функция для остановки заданий

    Функция remove_task, встречается так же часто, как и set_task, а точнее если есть в плагине запуск задач, то как правило есть и остановка.
    Остановка секундомеров, таймеров и других задач.

    Инфо из 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 .
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    remove_task Функция для остановки заданий
    igas

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    прошу добавить заметку к статье, многие используют проверку на наличие task`a, перед тем как его остановить, пример:
    if(task_exists(TASK_ID))
            remove_task(TASK_ID)

    этого не стоит делать, вызовется 2 раза проверка, так как в нативной функции
    remove_task ( id = 0, outside = 0)

    уже встроена проверка на наличия task`a
    Valer4

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Цитата: igas
    прошу добавить заметку к статье, многие используют проверку на наличие task`a, перед тем как его остановить, пример:
    if(task_exists(TASK_ID))
            remove_task(TASK_ID)

    этого не стоит делать, вызовется 2 раза проверка, так как в нативной функции
    remove_task ( id = 0, outside = 0)

    уже встроена проверка на наличия task`a

    В какком файле?
    igas

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Цитата: Valer4
    Цитата: igas
    прошу добавить заметку к статье, многие используют проверку на наличие task`a, перед тем как его остановить, пример:
    if(task_exists(TASK_ID))
            remove_task(TASK_ID)

    этого не стоит делать, вызовется 2 раза проверка, так как в нативной функции

    remove_task ( id = 0, outside = 0)

    уже встроена проверка на наличия task`a

    В какком файле?

    в amxmodx.cpp

    Radius

    7.05.2013
    ICQ: 357188115
    Публикаций: 1
    Комментариев: 57
    Репутация: -  4  +

    Цитата: igas
    прошу добавить заметку к статье


    Добавлена

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама