Отхил совершеноо не прокает, при этом волна уходит в центр. Но не могу понять что с выбором юнита не так. Подскажите, почему не выбирает юнита из группы, в чём ошибка ?
function Trig_heal_heal_wave_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00F' ) ) then
return false
endif
return true
endfunction
function Trig_heal_heal_wave_Actions takes nothing returns nothing
local unit target_unit = GetSpellTargetUnit()
local integer intleave = 0
local integer target_integer = ( ( GetUnitAbilityLevelSwapped('A00F', GetTriggerUnit()) * 5 ))
local integer next_wave = ( ( GetUnitAbilityLevelSwapped('A00F', GetTriggerUnit()) * 5 - ( intleave ) ))
local integer wave = 1
local integer iloop = 0
local group Group = GetUnitsInRangeOfLocAll(2000.00, GetUnitLoc(udg_test_unit))
local integer level_spell = GetUnitAbilityLevelSwapped('A00F', GetTriggerUnit())
local unit array randomunit
local lightning array ltef
local unit nextunit
call GroupRemoveGroup( udg_Player_Group[8], Group )
call GroupRemoveGroup( udg_Player_Group[9], Group )
call SetUnitLifeBJ( target_unit, ( GetUnitStateSwap(UNIT_STATE_LIFE, target_unit) + ( GetUnitStateSwap(UNIT_STATE_MAX_MANA, GetTriggerUnit()) * ( ( I2R(next_wave) + 5.00 ) / 100.00 ) ) ) )
call GroupRemoveUnitSimple( target_unit, Group )
set randomunit [0] = target_unit
loop
exitwhen level_spell == iloop
if ( not ( CountUnitsInGroup(Group) == 0 ) ) then
else
set iloop = iloop + 1
set next_wave = ( ( GetUnitAbilityLevelSwapped('A00F', GetTriggerUnit()) * 5 ) - ( intleave ) )
set randomunit [wave] = GroupPickRandomUnit(Group)
call SetUnitLifeBJ( randomunit[wave] , ( GetUnitStateSwap(UNIT_STATE_LIFE, randomunit[wave]) + ( GetUnitStateSwap(UNIT_STATE_MAX_MANA, GetTriggerUnit()) * ( I2R(next_wave) / 100.00 ) ) ) )
call AddLightningLoc( "HWPB", GetUnitLoc(randomunit [wave - 1]), GetUnitLoc(randomunit [wave]) )
set ltef [wave] = GetLastCreatedLightningBJ()

set wave = ( wave + 1 )

set intleave = ( intleave + 5 )
call GroupRemoveUnitSimple( randomunit[wave - 1], Group )
endif
endloop
set wave = 1
call TriggerSleepAction( 10.00 )
set intleave = 0
set iloop = 0
loop
exitwhen iloop == level_spell
call DestroyLightningBJ( ltef[wave] )
set wave = ( wave + 1 )
endloop
endfunction
===========================================================================
function InitTrig_heal_heal_wave takes nothing returns nothing
set gg_trg_heal_heal_wave = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_heal_heal_wave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_heal_heal_wave, Condition( function Trig_heal_heal_wave_Conditions ) )
call TriggerAddAction( gg_trg_heal_heal_wave, function Trig_heal_heal_wave_Actions )
endfunction

Принятый ответ

Проблема в том что это конверт из ГУИ со всякими ненужными бжфункциями типа GetLastCreatedLightningBJ() и CountUnitsInGroup(Group) == 0 вместо FirstOfGroup(Group)==null, без форматирования под код, в котором черт ногу сломит.
target_integer - переменная объявлена, нигде не используется, и т.д.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Ancient:
Вообще-то конвертация вроде все, но не важно. В цикле TriggerSleepAction( 1 ) не юзай.
Ancient, нет, код действий написан вручную, GUI безобразит такие простые вещи, как "Если, то, иначе", циклы, создавая какую-то муть. А почему нельзя использовать ожидание? Сам цикл работает, а вот что с условием не могу понять. :(
В-общем, я не знаю, что за фигня внутри триггера, но, надо было ввести проверку уровня способности не "равно 1", а "меньше 2". Почему так, не понимаю, но рад, что из 17 просмотревших 1, да ответил)
ответ
Было на вин 10, проверь апдейты винды и драйверов, переставь или откатись - должно помочь.
ответ
Filius Dei:
я так и не понял почему ты не можешь просто сделать как улучшение что не так с улучшением как в обычном случае.
дело в описании, вот и не могу так сделать,если сделать через улучшение здания, то при наведении на иконку вплывает подсказка, та же подсказка что будет и у самого здания в списке построек у светлячка, тоесть если делать через улучшение (по идее этот же юнит должен быть и в списке построек (а он там есть) ту подсказку которую я хочу будет лишней. вот пример: Древо жизни превращается в древо мира, при этом все союзные юниты вблизи древа получают повышеную регенерацию здоровья. (а теперь представь что эта подсказка будет в списке построек у светлячка, вообще не то)
Решил проблему путем выбора древа когда истекает однократный таймер, также подумал и решил что наверно лучше делать через способности, а не исследования. Но у меня остался один вопрос, если этот тригер отвечающий за применения этих способностей будет использовать несколько игроков, я не знаю будет ли использоватся оно коректно или нет, также и с отдельным триггером Таймер. Вот что вышло в данный момент:
ответ
Потому что вы блокируете мультишот. Запрет спеллбука не запрещает способности, находящиеся в нем. Но запрет самих способностей, внезапно, запрещает их.
ответ
Вот это чо за рак мозга? Какие еще локалки в фильтре с ифами? Ну с таким не удивительно что не работает.
Да всё работает, вообще-то
quq_CCCP:
Примерно так слабо?
И в чём смысл делать глобалку, а не просто писать тогда уж сразу GetFilterUnit( )
Я сдеал локалку, чтобы вместо GetFilterUnit( ) писать то, что мне нужно, в данном случае CLONE
quq_CCCP:
Потом клонов от способностей ищут не так,
Да так и я их могу найти
Точнее не совсем так, я их искал через Юнит входит в Область ( Игровая зона )
Но искать их в другом триггере и сдругим событием мне нафиг не нужно.
Мне нужно найти иллюзии сразу в триггере со способностью, чтобы потом не было геморроя
========================
И ещё раз повторюсь, что при повторном использовании способности, 2 прошлые иллюзии (да и вообще в принципе если рядом с гером будут другое любое ко-во иллюзий) перемещаются к противнику. Но две новосозданные остаются на месте.
Так же повторюсь, что когда проверка была IsUnitIllusion == false, то иллюзии определяло как не иллюзии!
Все кто пытались помочь, похоже проигнорировали это замечание...
========================
Мой вывод таков: Иллюзиям, призванным через стандартную Способность (Предмет: Иллюзии) присваивается статус иллюзий слегка позже, чем происходит проверка.
С другой стороны, скорее всего это может и можно как-то обойти, ведь есть карты примеры, где подобное работает нужным образом.
О том, как устроены чёртовы способности близов стоит только догадываться =\
К счастью Способность (Предмет: Иллюзии) не наносит 0.00 урона, и за это близам огромное спасибо (что у меня в очередной раз не бомбануло)
А вообще, проще по-моему сделать свою игру, чем нормальную карту в варкрафте -_-

0
21
6 лет назад
Отредактирован biridius
0
Проблема в том что это конверт из ГУИ со всякими ненужными бжфункциями типа GetLastCreatedLightningBJ() и CountUnitsInGroup(Group) == 0 вместо FirstOfGroup(Group)==null, без форматирования под код, в котором черт ногу сломит.
target_integer - переменная объявлена, нигде не используется, и т.д.
Принятый ответ
0
32
6 лет назад
0
А еще с вейтами и утечками, никак нужная молния? (способность по типу целительной волны, цепи молний и так далее)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.