Но мне кажется, что дело не в в том что я ковыряю бету а в чем-то другом
Вот код, упростил уже до безобразия
Вот код, упростил уже до безобразия
do
local SpellTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
local player = Player(i)
TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
end
TriggerAddAction(SpellTrigger, function()
local eventId = GetHandleId(GetTriggerEventId())
local caster = GetTriggerUnit()
local casterX, casterY = GetUnitX(caster), GetUnitY(caster)
local spellId = GetSpellAbilityId()
-- local spellX, spellY = GetSpellTargetX(), GetSpellTargetY()
if spellId == FourCC('A000') then -- Призыв
print("призыв")
local newu = CreateUnit(GetOwningPlayer(caster), FourCC('h000'), casterX, casterY, GetUnitFacing(caster))
end
end)
end
Это один единственный триггер и 1 единственный код на всей карте
В общем, просто перестаёт срабатывать, после 3-4 вызова, иногда 1 раз сработает, у меня такое ощущение, что сборщик мусора подгребает локальный триггер и всё гг, как это исправить?
В общем, просто перестаёт срабатывать, после 3-4 вызова, иногда 1 раз сработает, у меня такое ощущение, что сборщик мусора подгребает локальный триггер и всё гг, как это исправить?
Принятый ответ
prog помог в личке в Дискорде, вот решение
Решение
do
local f = InitGlobals -- записываем InitGlobals в переменную
function InitGlobals() -- заменяем оригинальную InitGlobals своей
f() -- вызываем оригинальную InitGlobals из переменной
InitMyTrigger()
end
end
function InitMyTrigger()
local SpellTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
local player = Player(i)
TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
end
TriggerAddAction(SpellTrigger, function()
local eventId = GetHandleId(GetTriggerEventId())
local caster = GetTriggerUnit()
local casterX, casterY = GetUnitX(caster), GetUnitY(caster)
local spellId = GetSpellAbilityId()
-- local spellX, spellY = GetSpellTargetX(), GetSpellTargetY()
if spellId == FourCC('A000') then -- Призыв
print("призыв")
local newu = CreateUnit(GetOwningPlayer(caster), FourCC('h000'), casterX, casterY, GetUnitFacing(caster))
end
end)
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
И если я помню то события ломается! Делай через 0.0 таймер или инжект после main
И заодно делай хук CreateUnit своим и добавь сюда готовый FourCC а внешки вызвать как обычно как в старые добрые времена =)
и помню что с бж функция с события нормально работает а основной нативку ломается если не в мейне