Подскажытие команду для вызова фунцыи Я пытался так но не вышло call function GroupDamag

вот эту фунцыю хочю вызвать один раз подскажытие как это сделать
function GroupDamag takes nothing returns nothing
local timer Taimer = GetExpiredTimer()
local integer TaimerID = GetHandleId(Taimer)
local integer SpellID = LoadInteger(AbilityID,0,TaimerID)
local unit HeroUnit = LoadUnitHandle(HashUnit,0, TaimerID)

if(SpellID == 'A020') or (SpellID == 'A021') or (SpellID == 'A022') or (SpellID == 'A023') or (SpellID == 'A024') or (SpellID == 'A025') or (SpellID == 'A026') or (SpellID == 'A01Z') or (SpellID == 'A01X'){
local integer Damag = LoadInteger(HashDamag,0,TaimerID)
call UnitDamageTargetBJ( HeroUnit, GetEnumUnit(),Damag , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
}
if(SpellID == 'A013') and (IsUnitInGroup(GetEnumUnit(), LoadGroupHandle(HashGroupUnit,0,TaimerID))){
local real Damag = LoadReal(HashDamag,0,TaimerID)
call UnitDamageTargetBJ( HeroUnit, GetEnumUnit(),44 , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
call DisplayTextToForce( GetPlayersAll(), ("oooo") )
}
set HeroUnit = null
set Taimer = null
endfunction

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

эта функцыя исплизоваца плонируица сразу нескаликими врянтами
и перебором групы тоже мне нужна команда как как execut тока эгзекють внутри тригера а не другова тригера
проблема решена вот так call ExecuteFunc("GroupDamag") оказваеца есить другая команда ехекють
я думал тока тригер экзекють есить
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
28
6 лет назад
Отредактирован PT153
0
call GroupDamag()
Если функцию передаёшь в TimerStart, то тогда
call TimerStart(whichTimer, timeout, periodic, function GroupDamag)
0
13
6 лет назад
0
PT153, перед вызовом самой функции еще необходимо бы добавить сохранение некоторых данных в хэш-таблицу, которые понадобятся при работе. Странно, что идет упоминание GetEnumUnit(), хотя указанная функция сама по себе не является Enum'мной (так сказать). Если уж наносить урон, то либо перебором юнитов с помощью функции определения первого юнита через цикл, либо вызовом этой функции, но передачу значений осуществлять с помощью глобальных переменных, так как callback'и аргументов не берут (если, конечно, не брать во внимание извращения с мемхаком).
0
17
6 лет назад
Отредактирован N1ghtSiren
0
Не легче перебрать юнитов в самом скилле и направлять дамаг уже на нужных юнитов?
раскрыть
function Trig_Skills_ActionsSilent takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit caster = LoadUnitHandle(udg_GHT,h,1)
    local group g = CreateGroup()
    local unit u
    local real int
    local real sd = GetSpellDamage(caster) //skill damage
    local real cc = GetCritChance(caster) //crit chance
    call DestroyTimer(t)
    set t = null
    call FlushChildHashtable(udg_GHT,h)
    set int = (I2R(GetHeroInt(caster,true)))
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\Unsummon\\UnsummonTarget.mdl",caster,"origin"))
    call GroupEnumUnitsInRange(g,GetUnitX(caster),GetUnitY(caster),400+75,null)
    call GroupRemoveUnit(g,caster)
        loop
            set u=FirstOfGroup(g)
            exitwhen u==null
            call GroupRemoveUnit(g,u)
            if IsUnitInRangeXY(u,GetUnitX(caster),GetUnitY(caster),400)then
                if IsUnitEnemy(u,GetOwningPlayer(caster))then
                    if IsUnitInRangeXY(u,GetUnitX(caster),GetUnitY(caster),400)and IsUnitAliveAndEnemy(u,caster)then
                    if MissCalculator(u,0)==false then
                    else
                    call MagDamageWithCrit(caster, u, int*40, sd, cc, 2, "|cFF8F42B2")
                    call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Undead\\UCancelDeath\\UCancelDeath.mdl",u,"chest"))
                    endif
                    endif
                endif
            endif
        endloop
    set u = null
    call DestroyGroup(g)
    set g = null
    set caster = null
endfunction
0
14
6 лет назад
0
эта функцыя исплизоваца плонируица сразу нескаликими врянтами
и перебором групы тоже мне нужна команда как как execut тока эгзекють внутри тригера а не другова тригера
проблема решена вот так call ExecuteFunc("GroupDamag") оказваеца есить другая команда ехекють
я думал тока тригер экзекють есить
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.