Раньше я конвертил гуи триггеры с событие каста и условием id спелла. На сколько я знаю, это очень малоэффективно, т.к. каждый такой триггер срабатывает при касте любого спелла.
Потом я понял, что достаточно сделать один триггер с событием каста для каждого игрока, но тут я столкнулся с вопросом. если в функции-обработчике делать так:
Потом я понял, что достаточно сделать один триггер с событием каста для каждого игрока, но тут я столкнулся с вопросом. если в функции-обработчике делать так:
if spellId = spell1 then
-- код спелла
elseif spellId = spell2 then
-- код спелла
elseif ...
То если код некоторых способностей слишком велик, то файл будет тянуть на > 2к строк кода, и вся эта каша такое себе.
Как делаете вы? Как делать лучше?
Как делаете вы? Как делать лучше?
Принятый ответ
Если на луа, то можно что-то вроде
local id2callback = []
function registerSpell(id, callback){
id2callback[id] = callback
}
...
function runSpell(id){
local callback = id2callback[id[
if (type(callback) == 'function){
callback()
}
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован rsfghd
Отредактирован Doc
Если куча-куча спелов, то стоит сохранять в хеш по любому парент ключу и равкоду спела как чайлд ключу функцию, которая запускает спел. Функция может не принимать аргументов, всё необходимое можно будет достать изнутри. Во время срабатывания спела достаётся это функция и запускается через .evaluate() или .execute().
rsfghd:
Doc:
PT153:
Отредактирован Nelloy
Отредактирован Jack-of-shadow
С точки зрения именно оптимизации, это пердеж в подушку.