function AzibD_Check takes nothing returns boolean
    return GetSpellAbilityId() == 'A056'
endfunction
    
function AzibD_Action takes nothing returns nothing
    local integer val=LoadInteger(udg_MyHashtable, StringHash("Azib_Move"), 0)
    local unit tu=LoadUnitHandle(udg_MyHashtable, StringHash("Azib"), StringHash("Hero"))
    local location p
    local real a
    if val > 0 then
        set p = GetUnitLoc(tu)
        set a = GetUnitFacing(tu) //AngleBetweenPoints(p, p)
        call MoveLocation(p, GetLocationX(p) + 32 * CosBJ(a), GetLocationY(p) + 32 * SinBJ(a))
        call SetUnitPositionLoc(tu, p)
        call RemoveLocation(p) 
        call SetInteger(val-1, StringHash("AZID_Move"), 0)
    endif
    if val==0 then
        call SaveUnitHandle(udg_MyHashtable, 0, 0, null)
        call DisableTrigger(GetTriggeringTrigger())
    endif
endfunction

function AzibD_Spell takes nothing returns nothing
    local trigger obt=CreateTrigger()
    call SetInteger(25, StringHash("Azib_Move"), 0)
    call SetUnit(GetTriggerUnit(), StringHash("Azib"), StringHash("Hero"))
    call TriggerRegisterTimerEvent(obt, 0.04, true)
	call TriggerAddAction(obt, function AzibD_Action)
endfunction

//===========================================================================
function InitTrig_AzibD takes nothing returns nothing
    local trigger mjt = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( mjt, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( mjt, Condition( function AzibD_Check ) )
    call TriggerAddAction( mjt, function AzibD_Spell )
endfunction
почему не работает?
по идее он должен выключится когда пройдут заряды.

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

перебор 1 таймером стека быстрее чем хэш в 3n раз где n - количество одновременно работающих триггеров
В базе есть статья об этом?
4
21
9 лет назад
4
не буду тратить время, что должен делать код?
что дебаг показал?
4
28
9 лет назад
4
ибо надо юзать таймер вместо триггера
0
12
9 лет назад
0
Чет мне кажется ты стырил тригер откудато и впихнул в свою мапку, не пашет полагаю из-за отсутствия скила A056 и в редакторе ты не сделал автосоздание переменных
4
28
9 лет назад
4
и код уг полное
не оптимален
ибо на локейшинах, триггерах и хеше
2
11
9 лет назад
2
nvc123:
ибо надо юзать таймер вместо триггера
причем тут таймер? и периодический ивент нормально
Kolya12:
Чет мне кажется ты стырил тригер откудато и впихнул в свою мапку, не пашет полагаю из-за отсутствия скила A056 и в редакторе ты не сделал автосоздание переменных
за идиота меня считаешь?
nvc123:
и код уг полное
не оптимален
ибо на локейшинах, триггерах и хеше
а что еще юзает. один из самых безутечных способов
0
7
9 лет назад
0
SetInteger твоя функция или ещё чья-то, код её ты не выложил, пробуй вместо неё SaveInteger(udg_MyHashtable, StringHash("Azib_Move"), 0, val - 1). В гуи Hash table - save integer.
0
28
9 лет назад
0
причем тут таймер? и периодический ивент нормально
я бы сказал почему этот способ нельзя юзать но про это уже написано в статьях
Farrien:
а что еще юзает. один из самых безутечных способов
во первых
триггер утекает
во вторых
координаты работают в несколько раз быстрее локейшенов
в третьих
перебор 1 таймером стека быстрее чем хэш в 3n раз где n - количество одновременно работающих триггеров
но тут достаточно и 1 пункта
тоесть у тебя утечка
причём не маленькая точка а реально большой объект
запомни
все движения юзаются по принципу ткс
таймер координаты список
0
33
9 лет назад
0
перебор 1 таймером стека быстрее чем хэш в 3n раз где n - количество одновременно работающих триггеров
В базе есть статья об этом?
Принятый ответ
0
28
9 лет назад
0
Кет, да
либо на форуме
Чтобы оставить комментарий, пожалуйста, войдите на сайт.