28

» WarCraft 3 / Утечка памяти

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

» Unryze Jass API / [UjAPI] Конкурс Наработок 2024

Unryze, стоило в самом ресурсе написать как именно происходит сдача работ:
  1. непосредственно организатору
  2. любому из судей
  3. в комментариях под ресурсом
  4. ресурс пользователя с пометкой конкурса южапи
  5. какой-то тред который хз где и я вообще в первые о нём слышу
  6. я понял что за "тред", но брух, такие вещи всё равно стоит расписывать
28

» WarCraft 3 / Какие ошибки допущены в данной способности? Jass.

LastUchiha, структуры очень сильно облегчат тебе работу с кодом. Лучше выгрузить структуру и сразу работать со значениями, нежели выгружать каждое значение, изменять его и снова сохранять.
Вот тебе простой пример:
globals
	constant hashtable H = InitHashtable( )
endglobals

struct MyStruct
	unit caster
	
	real x
	real y
	real z
endstruct

function FuncForTimer takes nothing returns nothing
	local MyStruct A = LoadInteger( H, GetHandleId( GetExpiredTimer( ) ), 0 )
	
	set A.x = A.x + 5.00
	set A.y = A.y + 5.00
	set A.z = A.z + 5.00

	call SetUnitPositition( A.caster, A.x, A.y )
	
	set A.caster = null
	call A.destroy( ) // удаление структуры

	call FlushChildHashtable( H, GetHandleId( GetExpiredTimer( ) ) )
	call DestroyTimer( GetExpiredTimer( ) )
endfunction

function MyFunc takes nothing returns nothing
	local timer t = CreateTimer( )
	local MyFunc A = MyFunc.create( ) // создание структуры

	set A.caster = GetTriggerUnit( )

	set A.x = GetUnitX( A.caster )
	set A.y = GetUnitY( A.caster )
	set A.z = GetUnitFlyHeight( A.caster )

	call SaveInteger( H, GetHandleId( t ), 0, A ) // структура это целочисленная
	call TimerStart( t, 0.00, false, function FuncForTimer )

	set t = null
endfunction
28

» WarCraft 3 / Какие ошибки допущены в данной способности? Jass.

решил чисто из спеллмейкерского любопытства заценить и открыть карту, и был разочарован, ты бы хоть удосужился плавное сгасание добавить молниям, дополнительные эффекты от нанесения урона, не по земле молнию волочить, а с оффсетом (выше упомянули ImpactZ, но хотя бы для покрытия половины нужд тыкнуть +50/60 к Z, чтобы оторвать от земли)
28

» WarCraft 3 / Какие ошибки допущены в данной способности? Jass.

LastUchiha, код нормальный, я бы только этот момент поправил
			call GroupAddUnit( GroupTemp, firstUnit )
            call GroupEnum( GroupAct, RadiusChain, GetUnitX( firstUnit ), GetUnitY( firstUnit ), GetBaseSpellFilter( caster ) )
            
            loop
                set pickedUnit = GroupPickRandomUnit( GroupAct )
                exitwhen pickedUnit == null
                
                if not IsUnitInGroup( pickedUnit, GroupTemp ) then
                    call RemoveLightningTimed( AddLightningEx( "CLSB", true, GetUnitX( firstUnit ), GetUnitY( firstUnit ), GetUnitZ( firstUnit ), GetUnitX( pickedUnit ), GetUnitY( pickedUnit ), GetUnitZ( pickedUnit ) ), 0.2 )
                    set firstUnit = pickedUnit
                    call DamageUnit( caster, pickedUnit, 100, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
                    call GroupAddUnit( GroupTemp, firstUnit )
                endif
                
                call GroupRemoveUnit( GroupAct, pickedUnit )
            endloop
--->
            call GroupEnum( GroupAct, RadiusChain, GetUnitX( firstUnit ), GetUnitY( firstUnit ), GetBaseSpellFilter( caster ) )
            call GroupRemoveUnit( GroupAct, firstUnit )
            
            loop
                set bj_groupRandomConsidered = 0
                set bj_groupRandomCurrentPick = null
                call ForGroup( GroupAct, function GroupPickRandomUnitEnum)
                exitwhen bj_groupRandomCurrentPick == null
                call GroupRemoveUnit( GroupAct, bj_groupRandomCurrentPick )
                
                call RemoveLightningTimed( AddLightningEx( "CLSB", true, GetUnitX( firstUnit ), GetUnitY( firstUnit ), GetUnitZ( firstUnit ), GetUnitX( bj_groupRandomCurrentPick ), GetUnitY( bj_groupRandomCurrentPick ), GetUnitZ( bj_groupRandomCurrentPick ) ), 0.2 )
                call DamageUnit( caster, bj_groupRandomCurrentPick, 100, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
                
                set firstUnit = bj_groupRandomCurrentPick
            endloop
ну и надеюсь у тебя включена оптимизация кода, иначе очень хреново, что ты юзаешь вспомогательные функции, по сути создал свой арсенал близзардовских бжшек
28

» WarCraft 3 / Снижение брони за атаку

Joma, вбей в переводчик Increment и воспользуйся дедуктивными способностями
28

» WarCraft 3 / Какие ошибки допущены в данной способности? Jass.

Приложи код к вопросу. Не каждый, кто может помочь, имеет доступ к редактору или желание открывать карту
28

» Unryze Jass API / [UjAPI] Конкурс Наработок 2024

Unryze, м, а почему работы не поступило? кем является тогда Таренас? он мне в личку писал, я думал это судья и он принял мои работы
противненько конечно вышло, но да ладно
28

» WarCraft 3 / Снижение брони за атаку

Joma, открывать карту не собираюсь, но предполагаю, ты просто сделал прелоад
28

» WarCraft 3 / Снижение брони за атаку

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

» WarCraft 3 / Снижение брони за атаку

Если в коде есть ошибки или есть способ лучше реализовать, кто знает подскажите
бро...
Загруженные файлы
28

» WarCraft 3 / Снижение брони за атаку


время дебаффа обновляется, сам дебафф плюсуется, по окончанию времени все дебаффы (стаки) спадают
чтобы каждый бафф спадал отдельно - добавь просто дополнительные параметры времени дебаффа и его количества, обновление дебаффа можно тогда удалить
28

» WarCraft 3 / Не работает триггер

N7 Molot, время смерти есть, а разложение можно убрать в редакторе объектов, тогда после времени смерти юнит удаляется из игры
28

» WarCraft 3 / Способности и алгоритмы на заказ

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