Добавлен
Целесообразно ли использовать в карте рекурсию? Или лучше динамик триггеры?

Разумеется не целесообразно, обычно рекурсии заканчивается фаталом. Да и нагрузка лишняя, просто таймер и усе.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
екзекут принимает строку
function Recursion takes nothing returns nothing
call TriggerExecute("Recursion")
endfunction
а вообще что за бред
фатал делается гетлокалплеером и техникой
ответ
map_maiker, как и в java или c++
а вообще неужели попробовать самому дольше чем создать ресурс?
ответ
Увы низя указывать рекурсии на взаимосвязи элементов или юнитов.
Если вы хотите отменять апгрейды зданий, делайте их кастомно к примеру на основе продажи\подготовки юнитов, только здание продало\построило определённого юнита сразу же изменть его на другое, попутно удалив подготовленного\проданного юнита.
Такой принцип используется в TD от близзард ''Лазурные башни".
Можно попробовать с помощью морфов сфинкса.
ответ
Maniac_91, фактически такая генерация и была придумана Нотчем для майнкрафта. Просто обычная система "биомов". Это кстати очень неплохо, ведь для каждого биома ты можешь подгружать свой пул декораций и так разнообразить визуальную составляющую игры.
Так же перед началом игры (после загрузки карты), можно сделать плашку "загрузки генерации", которая показывала бы пользователям % готовность генерации. А далее, таймерами или вейтами, выставлять "отдых" для варкрафта из-за нагрузки. Мол, каждые 1500 выполнений триггера - отдохни на секунду, хорош.
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.

32
Разумеется не целесообразно, обычно рекурсии заканчивается фаталом. Да и нагрузка лишняя, просто таймер и усе.
Принятый ответ
20
Ответы уже даны, конечно, но считаю умемтным поинтересоватья для каких конкретных задач интересует сабж
28
целесообразно ничего из этого не использовать
имхо рекурсия нужна только в алгоритмах на графах но не думаю что ты их юзаешь (или хотябы знаешь их)
динамические триггеры практически ненужны
есть лишь 1-2 специфичных случая в которых их можно применить но и то можно без них
Чтобы оставить комментарий, пожалуйста, войдите на сайт.