quq_CCCP, у тебя код там немного кривоват, я не сразу смог прочитать его ибо запутался чё там происходит) а впрочем да, для всех похожих абилок достаточно 1 триггера с ифами на то, какая способность триггернула, ну и под неё выставлять все параметры
PT153, там заново действие в триггер добавляется через кондишен. Да и когда я проверял всё работало как надо. Я тебе вроде даже говорил о результатах, ведь именно ты сказал, что уничтожение триггера стирает события, хоть это и не имело особого толку из-за незначительности события
действительно, аккуратный менеджмент ресурсов легко решает все проблемы.
структура может хранить в себе другие структуры, поэтому, если ты к примеру сохраняешь в юнита несколько структур и там как-то подменяешь их чтобы экономить место, можно просто выделить ещё одну структуру для всех остальных, упаковать в коробку так сказать, а потом из этой коробки доставать и делать все действия, и парится не нужно
Попробуй написать set damagedTriggers[deadUnitIndex] = null после DestroyTrigger(damagedTriggers[deadUnitIndex]) ._.
Я уже проверял тему с периодическим уничтожением триггера дабы избавиться от событий несуществующих юнитов, всё работает, события уничтожаются триггер тоже
раскрыть
globals
private region rectRegion
private timer Timer = CreateTimer()
group TempG = CreateGroup()
// trigger gg_trg_ElectricCharge
endglobals
private function ElectricCharge_Actions takes nothing returns boolean
...
return false
endfunction
//========================================================
private function RegistEventA takes nothing returns boolean
call TriggerRegisterUnitEvent(gg_trg_ElectricCharge,GetFilterUnit(),EVENT_UNIT_DAMAGED)
return false
endfunction
private function RegistEvent takes nothing returns nothing
if gg_trg_ElectricCharge != null then
call DestroyTrigger(gg_trg_ElectricCharge)
endif
set gg_trg_ElectricCharge = CreateTrigger( )
call GroupEnumUnitsInRect(TempG,bj_mapInitialPlayableArea,Condition(function RegistEventA))
call TriggerAddCondition(gg_trg_ElectricCharge,Condition(function ElectricCharge_Actions))
call TimerStart(Timer,600.,false,function RegistEvent)
endfunction
private function RegistEventB takes nothing returns boolean
if GetUnitAbilityLevel(GetTriggerUnit(),'Aloc') == 0 then
call TriggerRegisterUnitEvent(gg_trg_ElectricCharge,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
endif
return false
endfunction
function InitTrig_ElectricCharge takes nothing returns nothing
local trigger t = CreateTrigger()
call RegistEvent()
set rectRegion = CreateRegion()
call RegionAddRect(rectRegion,bj_mapInitialPlayableArea)
call TriggerRegisterEnterRegion(t,rectRegion,null)
call TriggerAddCondition(t,Condition(function RegistEventB))
set t = null
endfunction
local integer i = 'h000'
local integer l = 0
loop
exitwhen (l == 11)
if (l == 0 and GetLocalPlayer() == Player(0)) then
set i = 'h001'
endif
call CreateUnit(Player(l), i, 0., 0., 0.)
set i = 'h000'
set l = l + 1
endloop
из той же статьи, делаешь для остальных без модели, для других с моделью
однако как там и указали, юзаешь GetUnitTypeId осторожно после такого
PT153, ему нужно уничтожать события, висящие на юнитах, когда они умирают
мне достаточно обычной регистрации получения урона на один триггер при инициализации и входе на карту, и периодического пересоздавания триггера раз в 10 минут
Кстати, а тут у тебя поток обрывается если что))
loop
exitwhen (i==damagedTriggers.size)
if (damagedTriggers[i]!=null) then
set trgCount = trgCount + 1
endif
if (tUnits[i]!=null) then
set unitCount = unitCount + 1
endif
set i = i + 1
endloop
лимит операций колеблется 800~ на поток, а у тебя это
ну как бы переменные в структуре превращаются потом в глобалки, и соответсвенно она не будет делать за тебя работу вроде уничтожить группу, а потом присвоить ей нулевое значение, подчищать это дело должен ты сам
а если волнуют обращения к переменным уничтоженной структуры, можешь, к примеру, булевую пихнуть
Если ты про критическую ошибку ос во время работы с редактором, то тут много всякой хренотени могло случиться. Если зависает редактор только в твоей карте, а на пустой всё норм, то попробуй взять версию с резерва, если так везде, то переустанови вар
Лично у меня ошибки вылетали больше 2-х раз в месяц, в конце концов вообще после 5 секунд с момента включения компа, потом и вовсе отказывался в биос заходить. Отнес в ремонт, они там пошаманили-почистили, вернули, через несколько дней снова ошибка. Короче дело было в термопасте, после замены которой всё хорошо уже месяц+
ArhiMEN, лол, есть функция GetLocZ, посмотри какой-нибудь мой спелл (не советую, всё говно) или любого другого чела где используется например прыжок или тоже работа с молниями
globals
location LFZ = Location(0,0)
endglobals
function GetLocZ takes real x, real y returns real
call MoveLocation(LFZ,x,y)
return GetLocationZ(LFZ)
endfunction
Ред. rsfghd
» Блог им. rsfghd / Спеллпак Повелителя Грома
Ред. rsfghd
» WarCraft 3 / Волна силы не пашет vJass
а впрочем да, для всех похожих абилок достаточно 1 триггера с ифами на то, какая способность триггернула, ну и под неё выставлять все параметры
» WarCraft 3 / Вращение юнита
» WarCraft 3 / Волна силы не пашет vJass
Ред. rsfghd
» WarCraft 3 / Вращение юнита
» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).
Ред. rsfghd
» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.
Ред. rsfghd
» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).
» WarCraft 3 / Функция GetLocalPlayer()
вот тут его абилки ru.leagueoflegends.com/ru-ru/champions/mordekaiser
» WarCraft 3 / Функция GetLocalPlayer()
Ред. rsfghd
» WarCraft 3 / Функция GetLocalPlayer()
» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.
» WarCraft 3 / Не работает код (jass)
» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).
» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.
» WarCraft 3 / Warcraft 3 Reforged Взломан!
спасибо за такую щедрость, но не стоит)
» WarCraft 3 / Warcraft 3 Reforged Взломан!
Ред. rsfghd
» WarCraft 3 / Warcraft 3 Reforged Взломан!
Ред. rsfghd
» WarCraft 3 / JNPG Не проверяется код
» WarCraft 3 / Зависание редактора
Ред. rsfghd
» WarCraft 3 / Система очков аттрибута
» WarCraft 3 / Карта не отображается в самом варкрафте
» WarCraft 3 / Респавн крипов
» WarCraft 3 / отлов удара на ГУИ
карту открой приложенную к вопросу
Ред. rsfghd
» WarCraft 3 / Анашин - Похититель душ