Mate, очевидно что прежде чем триггеру добавить действие, его нужно сначала написать, у этой функции, назовем её TriggerAction не должно быть аргументов,
function TriggerActions takes nothing returns nothing
Функцию эту нужно обьвить выше того места где ты собрался добавлять триггеру действие.
А уже в самой функции ты будешь удалять юнитов, ссылаясь на GetTriggerUnit() - это тот на кого сработало событие триггера, разумеется это работает на те события, которые напрямую связанны с юнитом.
Mate, а почему вы пытаетесь добавить триггеру действие, ссылаясь на нативную функцию которая требует аргументы.
функция TriggerAddAction требует триггера и code, ссылку на функцию, при этом у этой функции не должно быть ни входных аргументов.
Блин я в этом рус гуи нихрена понять немогу, спелл примитив, если как в доте без изисков и по простому - опен дота, там он есть на ретурнбаге (изи меняется на хт).
Frzctions, ну ты не представляешь синтаксис jaas'a? Или что тебе непонятно, функция может принимать аргументы или возвращать, но возвращает всегда лишь 1 аргумент.
Frzctions, вот примерно так можно сделать, но для этого нужно включать думалку.
код jass
globals
group TempGroup = CreateGroup()
unit bj_lastFilterUnit = null
endglobals
function Trig_Dark_Explosion_Copy_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A005' )
endfunction
function Ally_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit()
return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitAlly( bj_lastFilterUnit, bj_groupEnumOwningPlayer) and GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) < GetUnitState( bj_lastFilterUnit, UNIT_STATE_MAX_LIFE ) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора союзников
endfunction
function Enemy_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit()
return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitEnemy(bj_lastFilterUnit, bj_groupEnumOwningPlayer) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора противников
endfunction
function Trig_Dark_Explosion_Copy_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local real cx = GetUnitX(caster)
local real cy = GetUnitY(caster)
local real heal = RMaxBJ( 25.00, GetHeroStr( caster, true ) * 3.00 )
local real damage = RMaxBJ( 25.00, GetHeroStr( caster, true) * 25.00 )
local unit enumunit = null
set bj_groupEnumOwningPlayer = GetOwningPlayer( caster )
// союзники
call GroupClear(TempGroup)
call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Ally_Filter) )
loop
set enumunit = FirstOfGroup( TempGroup )
exitwhen enumunit == null
call GroupRemoveUnit( TempGroup, enumunit )
call SetUnitState( enumunit, UNIT_STATE_LIFE, GetUnitState( enumunit, UNIT_STATE_LIFE ) + heal )
call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
endloop
// враги
call GroupClear(TempGroup)
call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Enemy_Filter) )
loop
set enumunit = FirstOfGroup( TempGroup )
exitwhen enumunit == null
call GroupRemoveUnit( TempGroup, enumunit )
call UnitDamageTarget( caster, enumunit, damage, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
endloop
set enumunit = null
set caster = null
endfunction
//===========================================================================
function InitTrig_Dark_Explosion_Copy takes nothing returns nothing
set gg_trg_Dark_Explosion_Copy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Dark_Explosion_Copy, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Dark_Explosion_Copy, Condition( function Trig_Dark_Explosion_Copy_Conditions ) )
call TriggerAddAction( gg_trg_Dark_Explosion_Copy, function Trig_Dark_Explosion_Copy_Actions )
endfunction
Frzctions, еще раз, для переноса неких данных из одной функции в другую, которая не вызывается напрямую через call юзают либо хештаблицы, либо глобальные переменные, они если что для этого и созданы, ну либо строят код так чтобы переносить ничего не потребовалось...
Чтобы передать в группу переменную, нужна либо хештаблица либо глобальная переменная, так же в группе будет работать GetTriggerUnit() - тот кто применил спелл.
Steal nerves, самое стремное что любой приказ через IssueXXXOrder сбивает всю очередь, только стан умеет сдвигать всю очередь и сувать свой приказ. Но это можно абузить.
EVENT_UNIT_DECAY или как то так, вроде есть на конкретного юнита и всех юнитов конкретного игрока.
А насчет вокскрес или нет, это как? Юниты сами не воксресают как и герои, умер значит умер, на воскрешения героя есть отдельное событие.
Это не так то просто без редактора. РО коды объектов, просто целые числа в порядке возрастания, вам придется переставить все нужные объекты так чтобы не осталось провалов, насколько помню даже в редакторе с этим были проблемы если удалить кучу объектов созданных когда то давно, самыми первыми.
» WarCraft 3 / Проблема с мультибоардом
» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.
А уже в самой функции ты будешь удалять юнитов, ссылаясь на GetTriggerUnit() - это тот на кого сработало событие триггера, разумеется это работает на те события, которые напрямую связанны с юнитом.
» WarCraft 3 / Проблема с мультибоардом
» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.
функция TriggerAddAction требует триггера и code, ссылку на функцию, при этом у этой функции не должно быть ни входных аргументов.
» WarCraft 3 / ZinC: Похищение жизни
» WarCraft 3 / Помогите со спелом типа waveform морфа
» WarCraft 3 / Помогите со спелом типа waveform морфа
» WarCraft 3 / ZinC: Похищение жизни
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / повернуть здание через мемхак
» WarCraft 3 / Сохранение приказов v2.0
» WarCraft 3 / Отследить разложения юнита.
А насчет вокскрес или нет, это как? Юниты сами не воксресают как и герои, умер значит умер, на воскрешения героя есть отдельное событие.
» WarCraft 3 / Удаление лишнего
» WarCraft 3 / Локальные переменне при нескольких "вейтах"
» WarCraft 3 / wait течет или капает?
Существуют таймеры и триггеры.
» WarCraft 3 / Локальные переменне при нескольких "вейтах"
» WarCraft 3 / Мечта о мотоцикле в Варкрафт