function InitTrig_Spell takes nothing returns nothing
	set Mx[0] = CreateTrigger()
	call TriggerRegisterAnyUnitEventBJ(Mx[0], EVENT_PLAYER_UNIT_SPELL_EFFECT)
	call TriggerAddAction(Mx[0], function Spell_Act)
	call TriggerAddCondition(Mx[0], Condition(function Spell_Cond))
endfunction
Будет ли создан новый поток для функции Spell_Act, или будет использоваться поток который создан игрой изначально?
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Что в твоём понимании поток и зачем тебе такая информация?
Ответы (8)
15
nazarpunk, ну у меня в различных функциях возможно будут использоватся темповые глобальные переменные.
Соответственно каким то образом 2 раза подряд игроки используют способность, и если для этой способностей каждый раз создаётся поток, оно ведь поломается.
15
rsfghd, эмм, но это же не значит что можно использовать одинаковые глобалки на все абилки, верно?
Та же ExecuteFunc создаёт поток, тогда почему вар однопоточен?
28
LastUchiha, потому что эти псевдопотоки выполняются последовательно. Ты можешь использовать одинаковые глобалки на все абилки
25
LastUchiha, варкрафт даже одномоментные события выполняет по очереди. Тип "юнит умер" и дальше выполняются по очереди все триггеры с таким событием. 1 триггер начал работу, завершил, дальше идет 2 триггер, потом 3 и тд.
Однако триггер может не полностью выполнится как начнет выполнятся следующий триггер. Например есть задержка ожидания, когда используешь действие "ждать".
Если не ошибаюсь, еще триггер может быть приостановлен а потом продолжен после выполнения других триггеров если в нем выполняется оооооочень много действий (большие циклы, большие вложенные функции-триггеры и тд).
Поэтому да, ты прав, одинаковые глобалки лучше не применять на все абилки.
(опять же, на короткие действия типа засейвил в одну и ту-же глобалку для всех триггеров данные и через 5-50 действий без длинных циклов используешь для всех абилок в целом ничего страшного не будет)
28
konvan5, ты ошибаешься. Триггер может быть "приостановлен", если он вызывает действия другого триггера, т.е. в одном триггере юзаешь нанесения урона, что вызовет триггер получения урона
25
rsfghd, у меня просто был такой случай давно, когда триггер баговался постоянно когда использовал одну переменную для временных таких действий в разных триггерах. Возможно и напоролся на подобный непрямой вызов другого триггера где использовалась такая-же переменная.
(еще возможно какое-то действие давало задержку во времени)
В любом случае такие связи сложно отслеживать, особенно если карта большая.
(или всегда держать в голове что происходит в карте и что используешь и как, то есть думОть :D)
28
konvan5, поэтому я в каждой библиотеке юзаю приватные темповые переменные, чтобы не стрелять в колено
Ответы (6)
15
rsfghd, почитал, т.е. лучше не юзать темповые в таймерах, вэйтах, циклах?
25
LastUchiha, 100%
(в циклах можно если думать где куда откуда)
15
konvan5, ну я так понимаю если как ты выше и упомянул функций будет немного в цикле то можно юзать.
А если таймер не будет переодичен, можно ведь юзать? (т.е. уже после его истечения)
И в ForGroup та же самая ситуация что и с циклом?
25
LastUchiha, по сути ForGroup Это тоже цикл)
Главное в циклы вейты и таймеры не запихать XD
15
konvan5, ну вот я за ForGroup и поинтересовался. Теперь понятно!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.