Чебурашка
offline
Опыт:
5,460Активность: |
Wait и выбор группы
Имеется триггер.
Сначала выбирается группа юнитов около точки. после чего над ней совершается действие Код:
В функции Damage создается дамми и кастут спелл на юнита Захотел я чтоб была задержка перед эффектом Для этого я в ф-ии Damage вставил Код:
Код:
Самое интересное, что стерев оттуда и вставив в ф-цию Action Код:
Лишь когда убрал все Waitы и SleepAction заработало |
12.12.2008, 01:44 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
Чебурашка, поллед вейт работает только с числами больше 0.45
Hellfim добавил: Триггер слип экшн, вроде только с 0.1 |
12.12.2008, 01:46 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Чебурашка
offline
Опыт:
5,460Активность: |
Цитата:
а TriggerSpeepAction ? упс. не заметил А уточните, не работает значит не оказывает эффекта или запарывает все что после ? У меня так второе Отредактировано Чебурашка, 12.12.2008 в 01:52. |
|
12.12.2008, 01:46 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,734Активность: |
Чебурашка Wait не работает меньше 0.1, если поставить меньше всё равно будет 0.1
Сделай отдельно спел и выложи, так непонятно где ошибка. Отредактировано ExArt, 12.12.2008 в 08:37. |
12.12.2008, 08:26 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
19,072Активность: |
Проблема в том, что в циклах нельзя использовать вэйты. Придется тебе обходится периодич. триггером или таймером.
Вот здесь обсуждалось. |
12.12.2008, 12:22 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
код в первом посте лажа)
1) в функциях, которые указываются как аргумент для нативки, работающей с группами не слипАкшинов, и конструкций, построенных на них (т.е. вейтов) вариант а Код:
вариант б, задержка каста Код:
Цитата:
в идеале их вообще не юзайте в 99% случаев |
|
12.12.2008, 15:33 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MicroElf
offline
Опыт:
4,188Активность: |
alexkill
Как это в циклах нельзя использовать вейты? Я юзал, работало:-) |
12.12.2008, 16:18 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
2MicroElf
цикл и каллБек функция для перебора юнитов в группе - совершенно разеые вещи |
12.12.2008, 16:54 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
19,072Активность: |
Кста, ADOLF, ForGroup по идее тоже производит действия в цикле?
|
12.12.2008, 17:23 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Чебурашка
offline
Опыт:
5,460Активность: |
привел код к виду
» раскрыть заработало вроде. основной имхо фрагмент function Check takes nothing returns boolean return (IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetSpellAbilityUnit()))) endfunction function Damage takes nothing returns nothing local unit r = GetTriggerUnit() local real a = GetUnitX(GetEnumUnit()) local real b = GetUnitY(GetEnumUnit()) local unit L = CreateUnit(GetOwningPlayer(r), 'o005' ,a,b,0) local effect l call UnitAddAbility(L,'A07B') call IssueTargetOrder(L,"thunderbolt", GetEnumUnit() ) call PolledWait(1.0) call DestroyEffect(l) call RemoveUnit(L) set l = null set L= null set r = null endfunction function Trig_bolt_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A07A' endfunction function Trig_bolt_Actions takes nothing returns nothing local group lND local location LoC local effect m = AddSpecialEffectLoc("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", GetSpellTargetLoc() ) call TriggerSleepAction(0.04) set LoC = GetSpellTargetLoc() set lND=GetUnitsInRangeOfLocMatching(225,GetSpellTargetLoc(),Condition(function Check)) call ForGroupBJ(lND,function Damage) call PolledWait (0.1) call DestroyGroup(lND) call RemoveLocation(LoC) call DestroyEffect(m) set m = null set LoC = null set lND = null endfunction //=========================================================================== function InitTrig_BoltDruid takes nothing returns nothing set gg_trg_BoltDruid = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_BoltDruid, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_BoltDruid, Condition( function Trig_bolt_Conditions ) ) call TriggerAddAction( gg_trg_BoltDruid, function Trig_bolt_Actions ) endfunction Код:
если честно я не понимаю разницу между PolledWait и TriggerSlepAction В первой ждем нужное время, а во второй не выполняем действий в тригере? Цитата:
не совсем уяснил принцип работы и как происходит задержка? Загоняем в группу gr_temp юнитов, а после для этой группы вызываем функцию Damage? А задержка где? бтв способ хороший ) |
|
12.12.2008, 19:26 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
loop это loop, callback это callback в циклах можно использовать что хочеш, включая веиты, а в callback веиты использовать нельзя, ну просто нельзя и все... проходись по группе, схраняй все што создаеш в массив, а потом в основой функции жди через ваит и через луп удаляй, ну или callback другой для удаления запусти |
12.12.2008, 20:40 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
user_jasser
offline
Опыт:
232Активность: |
Цитата:
мое мнение что ForGroup и и т.п. заюзаються движком рекурсивно ... |
|
13.12.2008, 02:09 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Чебурашка
offline
Опыт:
5,460Активность: |
Цитата:
Эмм, а можно образец кода? Я на словах понял так: Создаем группу, юнитов из группы в массив? или callback ? потом веит сколько мне нужно и удалять из массива Недопонял, честно |
|
13.12.2008, 03:29 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
Чебурашка не путайся... callback = просто функцыя (которая ничего не берёт и не возращает обычно...) которая вызываетьса напр при окончание срока таймера (ну он срабатывает) вот и всё. ну и там напр нельзя юзать вейты (напрямую =) ) но через ExecuteFunc() всё можно ^__^
|
13.12.2008, 05:24 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Чебурашка
offline
Опыт:
5,460Активность: |
Цитата:
опа-опа! ExecuteFunc это чит? Я смотрел коды других жассеров - ExecuteFunc встречается крайне редко, с чего бы? |
|
13.12.2008, 06:09 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Integro
старожило
offline
Опыт:
630Активность: |
Цитата:
Эта функция запускает другую функцию, при этом выполнение текущего кода продолжаеца. |
|
13.12.2008, 07:14 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
а точнее запуск ф-ции в новом потоке. кстати с помощью этой функции и еще пары действий можно выполнить что-то типа DestroyTrigger(GetTriggeringTrigger())
Отредактировано ScorpioT1000, 14.12.2008 в 21:26. |
13.12.2008, 16:27 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|