AMX MOD X
Пятница, 29.03.2024, 08:42:17



Приветствую Вас Гость | RSS
[ Главная ] [ set_task(id, ...) - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » set_task(id, ...) (про идентификаторы задач)
set_task(id, ...)
slogicДата: Вторник, 12.12.2006, 18:47:33 | Сообщение # 1
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Меня всегда интересовали след. вопросы:
1) Идентификаторы зачад должны быть уникальны в пределах одного плагина или всех плагинов?
2) Идентификатор 0 является ли служебным? Т.е. могут ли одновременно корректно выполнятьтся две и более задач с идентификатором 0?
3) Безопасно ли использовать id игрока в качестве идентификатора задачи?


Сообщение отредактировал slogic - Вторник, 12.12.2006, 18:47:50
 
VENДата: Среда, 13.12.2006, 14:51:12 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
1. Не должны (вопрос некорректен).
2. Да, и не только с нулевым идентификатором.
3. Да.

Теперь попытаюсь объяснить.

При создании задачи "конфликта", как такового, не будет, какой бы идентификатор ни был указан. Т.е. идентификатор не обязан быть уникальным. Идентификатор - это своего рода "метка", не более того. Таким образом, можно создавать несколько задач с одинаковым идентификатором. Пример:
Code
    // ...
     set_task(tasktime1, "mytask", index)
     set_task(tasktime2, "mytask", index)
     set_task(tasktime3, "mytask", index)
     // ...

public mytask() {
     server_print("Hello!")
}

В данном примере index может быть любым целым числом.

Следовательно, также будет "безопасно" производить следующее:
Code
     set_task(tasktime1, "task_set_health", player_index)
     set_task(tasktime2, "task_set_money", player_index)

Когда не требуется идентифицировать задачу, идентификатор обычно не указывают вовсе (он будет равен нулю).

Сообщение отредактировал VEN - Среда, 13.12.2006, 14:55:29
 
slogicДата: Среда, 13.12.2006, 15:23:42 | Сообщение # 3
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (VEN)
2. Да, и не только с нулевым идентификатором.

Тогда смысл в наличии функции task_exists? У меня вроде были проблемы, когда я создавал в цикле две задачи с незаданным явно ID (по кр. мере в amx).


Сообщение отредактировал slogic - Среда, 13.12.2006, 15:24:02
 
VENДата: Среда, 13.12.2006, 17:27:01 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Смысл, думаю, должен быть очевиден. Обычно используется тогда, когда, когда не уверены существует ли task (не task's). Также имеется возможность указать параметр outside.
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » set_task(id, ...) (про идентификаторы задач)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024