28

» WarCraft 3 / Волна силы не пашет vJass

quq_CCCP, у тебя код там немного кривоват, я не сразу смог прочитать его ибо запутался чё там происходит)
а впрочем да, для всех похожих абилок достаточно 1 триггера с ифами на то, какая способность триггернула, ну и под неё выставлять все параметры
28

» WarCraft 3 / Волна силы не пашет vJass

дебагом научись пользоваться, у тебя ошибка в слове
local SpellStruct s = LoadInteger(Hash,GetHandleId(T),StringHash("Strcut"))
call SaveInteger(Hash,GetHandleId(T),StringHash("Struct"),s)
28

» WarCraft 3 / Вращение юнита

Вот тут берги мне отвечал xgm.guru/p/100/259320, там же и комменты по делу, рассказывал о мемхаке и о нужных функциях
28

» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).

PT153, там заново действие в триггер добавляется через кондишен. Да и когда я проверял всё работало как надо. Я тебе вроде даже говорил о результатах, ведь именно ты сказал, что уничтожение триггера стирает события, хоть это и не имело особого толку из-за незначительности события
28

» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.

действительно, аккуратный менеджмент ресурсов легко решает все проблемы.
структура может хранить в себе другие структуры, поэтому, если ты к примеру сохраняешь в юнита несколько структур и там как-то подменяешь их чтобы экономить место, можно просто выделить ещё одну структуру для всех остальных, упаковать в коробку так сказать, а потом из этой коробки доставать и делать все действия, и парится не нужно
28

» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).

но опять же что делать со старым триггером.
Попробуй написать 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
28

» WarCraft 3 / Функция GetLocalPlayer()

ArhiMEN, ты какое-то говно скинул с кучей ненужного текста)
вот тут его абилки ru.leagueoflegends.com/ru-ru/champions/mordekaiser

quq_CCCP, ну продвинутую синхронизацию юзать тогда, чтобы не вылетало
28

» WarCraft 3 / Функция GetLocalPlayer()

Я хз как в лиге спеллы написаны, но любой спелл оттуда можно реализовать в варе.
А почему выдаст что-то не то?
Прочитай внимательно статью, там указали, что значения будут локальны
28

» WarCraft 3 / Функция GetLocalPlayer()

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 осторожно после такого
28

» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.

заместившей в некоторый момент интересующего триггер "Хоттабыча".
у меня например структуры юнитов строго по своим ячейкам распределены и я никогда не страдал от подобного
28

» WarCraft 3 / Удаленные юниты и триггеры остаются висеть в памяти (vJass).

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~ на поток, а у тебя это
private constant integer ALL_UNITS_COUNT = 2048
private trigger array damagedTriggers[ALL_UNITS_COUNT]
28

» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.

ну как бы переменные в структуре превращаются потом в глобалки, и соответсвенно она не будет делать за тебя работу вроде уничтожить группу, а потом присвоить ей нулевое значение, подчищать это дело должен ты сам

а если волнуют обращения к переменным уничтоженной структуры, можешь, к примеру, булевую пихнуть
28

» WarCraft 3 / Warcraft 3 Reforged Взломан!

как никак там около 30 gb
кря

то денег нет для рефа, то памяти
28

» WarCraft 3 / Зависание редактора

Если ты про критическую ошибку ос во время работы с редактором, то тут много всякой хренотени могло случиться. Если зависает редактор только в твоей карте, а на пустой всё норм, то попробуй взять версию с резерва, если так везде, то переустанови вар

Лично у меня ошибки вылетали больше 2-х раз в месяц, в конце концов вообще после 5 секунд с момента включения компа, потом и вовсе отказывался в биос заходить. Отнес в ремонт, они там пошаманили-почистили, вернули, через несколько дней снова ошибка. Короче дело было в термопасте, после замены которой всё хорошо уже месяц+
28

» WarCraft 3 / Система очков аттрибута

Гуванч, есть, но только на мемхаке

Благодаря фреймам ты можешь сделать свой инвентарь, чат, выбор чего-то, интерфейс. Диалоги Вара с кнопочками по сути тоже фреймы
28

» WarCraft 3 / Карта не отображается в самом варкрафте

Rejuvenation, я кста тоже думал предложить может папку создать и туда закинуть, показалось это глупым, но если у тебя сработало..
28

» WarCraft 3 / Респавн крипов

quq_CCCP, если трупы не удаляются быстрее вейта то всё ж норм должно быть?
28

» WarCraft 3 / Анашин - Похититель душ

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