//Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function Trig_Spell3_Conditions takes nothing returns boolean //Замени 'A001' на код своей способности.Его можно посмотреть нажав в редакторе объектов Ctrl+D. if ( not ( GetUnitAbilityLevel(udg_c, 'A001') >= 1 ) ) then return false endif return true endfunction //Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function Trig_Spell3_Func002001003 takes nothing returns boolean return ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_c)) == true ) endfunction //Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function Trig_Spell3_Func002Func001C takes nothing returns boolean //Замени 'BEah' на код своего Заклинания(Баффа).Его можно посмотреть нажав в редакторе объектов Ctrl+D. if ( not (GetUnitAbilityLevel(GetEnumUnit(),'BEah') > 0)) then return false endif return true endfunction //Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function Trig_Spell3_Func002A takes nothing returns nothing if ( Trig_Spell3_Func002Func001C() ) then //Урон наносится по формуле (Уровень способности * 50,00) можешь поменять как тебе нравится. call UnitDamageTarget( udg_c, GetEnumUnit(), ( I2R(GetUnitAbilityLevel(udg_c, 'A001')) * 50.00 ),true,false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS ) //Создается спецэффект "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"(Можешь заменить как тебе нравится, в JASS'е пишеться \\ вместо \), прикрепленный к груди юнита. call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",GetEnumUnit(), "chest")) endif endfunction //Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function Trig_Spell3_Actions takes nothing returns nothing //Отбираются юниты,враги udg_c, в радиусе 900(Можешь изменить,но меняя значение здесь, не забудь поменять значение "Облость воздействия" в редакторе объектов. call ForGroupBJ( GetUnitsInRangeOfLocMatching(900.00, GetUnitLoc(udg_c), Condition(function Trig_Spell3_Func002001003)), function Trig_Spell3_Func002A ) endfunction
//=========================================================================== //Trig_Spell3_Conditions Spell3 замени на имя своего триггера. function InitTrig_Spell3 takes nothing returns nothing set gg_trg_Spell3 = CreateTrigger( ) //Переодичность, с которой наносится урон. В данном случаее 1,00 секунда call TriggerRegisterTimerEvent(gg_trg_Spell3, 1.00, true) call TriggerAddCondition( gg_trg_Spell3, Condition( function Trig_Spell3_Conditions ) ) call TriggerAddAction( gg_trg_Spell3, function Trig_Spell3_Actions ) endfunction
Делал сейчас спел,не знаю как раскрыть
Code
ForGroupBJ( GetUnitsInRangeOfLocMatching
И еще как занести здесь юнита который облодает способностью A001?
Ну-ну,как и некоторые спелы в твоей AoS, которые конечно же ты тоже "сам" делал, вот только не видел я в твоей карте, благодарности людям, у которых ты позаимствовал спелы и переделал под себя.
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter) call DestroyBoolExpr(filter) return g endfunction
Если есть ошибки извиняй, писал на скорую руку.
Code
function Enum takes nothing returns nothing if(GetUnitAbilityLevel(u,1093677105)>0)then set <твоя переменная>=u endif if(GetUnitAbilityLevel(u,'BEah')>0)then call UnitDamageTarget(udg_c,u,I2R(GetUnitAbilityLevel(udg_c,1093677105)*50.)),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNO WS) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",u,"chest")) endif endfunction function Callback takes nothing returns boolean local unit u=GetEnumUnit() if(IsUnitEnemy(u,GetOwningPlayer(udg_c)))then set u=null return true endif return false endfunction function Trig_Spell3_Actions takes nothing returns nothing local boolexpr b=function Callback call ForGroup(GetUnitsInRangeOfLocMatching(900.,GetUnitLoc(udg_c),b,function Enum) call DestroyBoolExpr(b) set b=null endfunction
Местами здесь.
Сообщение отредактировал EdiTTORR - Понедельник, 13 Декабря 2010, 17:37:24
function Trig_Spell3_Func002A takes nothing returns nothing if GetUnitAbilityLevel(GetEnumUnit(),'BEah') > 0 then call UnitDamageTarget(udg_c,GetEnumUnit(),GetUnitAbilityLevel(udg_c, 'A001') * 50.,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",GetEnumUnit(),"chest")) endif endfunction
function Trig_Spell3_Actions takes nothing returns nothing local group g = CreateGroup() local boolexpr filter = Filter(function Trig_Spell3_Func002001003)
local group gr=CreateGroup() local unit g set gr= //нужная тебе группа loop set g=FirstOfGroup(gr) exitwhen g==null if //нужное тебе условие //действия endif call GroupRemoveUnut(gr,g) endloop call DestroyGroup(gr) set gr=null set g=null
Сообщение отредактировал Banzay89 - Среда, 15 Декабря 2010, 19:36:15
local group gr=CreateGroup() local unit g set g= //нужная тебе группа loop set g=FirstOfGroup(gr) exitwhen g==null if //нужное тебе условие //действия endif call GroupRemoveUnut(gr,g) endloop call DestroyGroup(gr) set gr=null set g=null