function InitTrig_SPELL_END takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_FINISH, null)
set i = i + 1
exitwhen i == GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
endloop
call TriggerAddAction(t, function SPELL_END )
set t = null
endfunction

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

MATRITSA, причём тут событие?
чтобы существовал GetTriggerUnit() необходимо чтобы функция в которой он используется была вызвана по событию связанным с юнитом
функция InitTrig_SPELL_END вызывается из мейна и как следствие не содержит никакого юнита
элементарная логика же
короче сначала иди в школу (первые 4 класса)
а потом в статьи
и начни писать нормально
надоел слова коверкать
0
21
6 лет назад
Отредактирован biridius
0
function InitTrig_SPELL_ACT takes nothing returns nothing
    set gg_trg_SPELL_ACT = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_SPELL_ACT, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( gg_trg_SPELL_ACT, function Trig_SPELL_ACT_Actions )
endfunction
.
function InitTrig_SPELL_END takes nothing returns nothing
    set gg_trg_SPELL_END = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_SPELL_END, EVENT_PLAYER_UNIT_SPELL_FINISH )
    call TriggerAddAction( gg_trg_SPELL_END, function Trig_SPELL_END_Actions )
endfunction
обычная генерация событий из ГУИ, зачем там было что-то менять?
0
14
6 лет назад
Отредактирован MATRITSA
0
call TriggerRegisterAnyUnitEventBJ по сикрету вот это
function InitTrig_SPELL_END takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_FINISH, null)
set i = i + 1
exitwhen i == 10
endloop
call TriggerAddAction(t, function SPELL_END )
set t = null
endfunction
развернутый врянт вот этого call TriggerRegisterAnyUnitEventBJ
и ана переберает по цыклу и выдает юнита и плеира а мне плеер не нужен тока юнит
0
21
6 лет назад
0
не, вот он развернутый
никаких GetPlayerId(GetOwningPlayer(GetTriggerUnit())) там нету
Загруженные файлы
0
14
6 лет назад
0
да я знаю изначалино у меня 10 там стояло
все работала а я добавил вот это и стала не работати GetPlayerId(GetOwningPlayer(GetTriggerUnit())) почему кто знает
0
21
6 лет назад
Отредактирован biridius
0
назад поменяй
неработает потому что не сушествует GetTriggerUnit() этот момент
0
14
6 лет назад
0
я могу поменять но мне нужно выеснение причины не работы для оптимизацые
0
21
6 лет назад
Отредактирован biridius
0
Если ты хочешь создавать событие только для юнитов, у которых есть нужная абилка, делай это отдельным триггером отслеживая вход юнита на карту, а не в инициализации этого триггера.
Но все равно это все ерунда, просто поменяй назад как было, не надо ломать то что работает. Эти события не нужно оптимизировать.
0
14
6 лет назад
Отредактирован MATRITSA
0
хорошо но это не есить обезателино если нету кучю взоимосвязаного кода у меня само событие не пашет
function F_SPELL_ACT takes nothing returns nothing
if ( IsUnitInGroup(GetTriggerUnit(), udg_OtratALL[94]) == false ) {
SpellLink.execute(GetSpellAbilityId(), 0)
set udg_TrigerUnit = GetTriggerUnit()
set udg_IndexPlayer = GetUnitUserData(udg_TrigerUnit)
call DisplayTextToForce( GetPlayersAll(), I2S(udg_IndexPlayer) ) Вот Эта часить кода не выполяеца
}
endfunction
===========================================================================
function SPELL_ACT takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterUnitEvent(t,GetTriggerUnit(),EVENT_UNIT_SPELL_FINISH)
call TriggerAddAction(t, function F_SPELL_ACT )
set t = null
endfunction
0
21
6 лет назад
Отредактирован biridius
0
call TriggerRegisterUnitEvent(t,GetTriggerUnit(),EVENT_UNIT_SPELL_FINISH)
на
call TriggerRegisterAnyUnitEventBJ(t,EVENT_UNIT_SPELL_FINISH)
вообще у тебя уже события перепутались
в триггере "SPELL ACT" было EVENT_UNIT_SPELL_EFFECT
0
14
6 лет назад
Отредактирован MATRITSA
0
я знаю что заработает но я не пойму почему это событие не работает ано что баганое или что
call TriggerRegisterUnitEvent
я не заметил все исправил
но как не работала событие так и не работает и я фиг знает как его зделать рабочим call TriggerRegisterUnitEvent
0
28
6 лет назад
0
MATRITSA, причём тут событие?
чтобы существовал GetTriggerUnit() необходимо чтобы функция в которой он используется была вызвана по событию связанным с юнитом
функция InitTrig_SPELL_END вызывается из мейна и как следствие не содержит никакого юнита
элементарная логика же
короче сначала иди в школу (первые 4 класса)
а потом в статьи
и начни писать нормально
надоел слова коверкать
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.