так вар и вылетает на 512 или где-то в этом диапазоне, я не помню откуда это вычитал, но где-то тут же, на хгм и обсуждали кто-то в комментах, мб DracoL1ch с quq_CCCP, как ты до 1200 не вылетел это прям удивление
вообще утечки по любому стоило устранять, если и не вылетает на 512~, то фпс проседает
а вместе с отменой минуса можно будет и обговаривать это вместе с теми, кто и поставил его
по поводу новичков, я за свои плюсы и минусы держусь как могу, если вижу, что чел в первые на хгм и вероятно ребёнок - я не захочу ответить ему, чтобы не получить рандомный минус
лично нам с другом было обидно, когда на его рес в первые кто-то влепил дизлайк, даже несколько было, и это, кстати, от фисуна
лично от меня, я бы хотел чтобы добавили хотя бы отмену минуса, помню куку случайно вместо лайка диз влепил, и получил в ответку тоже, неприятно вышло, подпортил отношения
library SpellLib
globals
constant hashtable H = InitHashtable( )
private constant real AuraRange = 400.00
private constant integer AuraID = 'A000'
private constant integer AbilityID = 'A001'
private constant integer AbilityMaxLvl = 10
private constant integer UnitGroup = StringHash( SCOPE_PRIVATE + "UnitGroup" )
private constant group TempG = CreateGroup( )
private constant group TempG_1 = CreateGroup( )
private group TempG_2 = null
private boolexpr CondAura = null
private boolexpr CondAdd = null
private unit TempUnit = null
private unit bj_lastFilterUnit = null
private unit bj_lastFilterUnit_1 = null
endglobals
native UnitAlive takes unit id returns boolean
private function CheckRange takes nothing returns nothing
local integer i
set TempUnit = GetEnumUnit( )
if not IsUnitInGroup( TempUnit, TempG_1 ) then
call GroupRemoveUnit( TempG_2, TempUnit )
set i = GetUnitAbilityLevel( TempUnit, AbilityID ) - 1
if i > 0 then
call SetUnitAbilityLevel( TempUnit, AbilityID, i )
else
call UnitRemoveAbility( TempUnit, AbilityID )
endif
endif
endfunction
private function EnumAddBuff takes nothing returns boolean
local integer i
set bj_lastFilterUnit_1 = GetFilterUnit( )
if IsUnitAlly( bj_lastFilterUnit_1, bj_groupEnumOwningPlayer ) and not IsUnitInGroup( bj_lastFilterUnit_1, TempG_2 ) then
call GroupAddUnit( TempG_2, bj_lastFilterUnit_1 )
set i = GetUnitAbilityLevel( bj_lastFilterUnit_1, AbilityID )
if i == 0 then
call UnitAddAbility( bj_lastFilterUnit_1, AbilityID )
else
call SetUnitAbilityLevel( bj_lastFilterUnit_1, AbilityID, i + 1 )
endif
endif
return true
endfunction
private function EnumWithAura takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
if GetUnitAbilityLevel( bj_lastFilterUnit, AuraID ) > 0 then
set TempG_2 = LoadGroupHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup )
if TempG_2 == null and UnitAlive( bj_lastFilterUnit ) then
set TempG_2 = CreateGroup( )
call SaveGroupHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup, TempG_2 )
endif
if UnitAlive( bj_lastFilterUnit ) then
set bj_groupEnumOwningPlayer = GetOwningPlayer( bj_lastFilterUnit )
call GroupEnumUnitsInRange( TempG_1, GetUnitX( bj_lastFilterUnit ), GetUnitY( bj_lastFilterUnit ), AuraRange, CondAdd )
call ForGroup( TempG_2, function CheckRange )
call GroupClear( TempG_1 )
else
loop
set TempUnit = FirstOfGroup( TempG_2 )
exitwhen TempUnit == null
call UnitRemoveAbility( TempUnit, AbilityID )
endloop
call DestroyGroup( TempG_2 )
call RemoveSavedHandle( H, GetHandleId( bj_lastFilterUnit ), UnitGroup )
endif
endif
return false
endfunction
function Spell_Actions takes nothing returns nothing
call GroupEnumUnitsInRect( TempG, bj_mapInitialPlayableArea, CondAura )
endfunction
//===========================================================================
function InitTrig_Spell takes nothing returns nothing
set gg_trg_Spell = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_Spell, 1.00, true )
call TriggerAddAction( gg_trg_Spell, function Spell_Actions )
set CondAura = Condition( function EnumWithAura )
set CondAdd = Condition( function EnumAddBuff )
set TempUnit = CreateUnit( Player( 0x0F ), 'hfoo', 0.00, 0.00, 0.00 )
call UnitAddAbility( TempUnit, AbilityID )
call SetUnitAbilityLevel( TempUnit, AbilityID, AbilityMaxLvl )
call KillUnit( TempUnit )
call RemoveUnit( TempUnit )
endfunction
endlibrary
по хорошему было бы юзать не миллион уровней атаки, а как сделал это Extremator в данном заказе
я просто не особо разобрал принцип, поэтому по старинке
спелл не для импорта само собой, просто показ, что это реально сделать с одной аурой
VinerX, не-а, по счётчику ничего не обнаружил и никогда подобного не случалось если были какие-то малейшие изменения
но имей ввиду, хэндлы это всё что находится на карте кроме дудадов
VinerX, посмотри гуи функцию "пропустить остальные действия" по факту это слово "return" в коде, то есть после ретурна ты никак не поставишь set newUnit = null, и правильно это делать после set bj_lastReplacedUnit = newUnit, а возвращать не newUnit, а bj_lastReplacedUnit, вот код если непонятно
set bj_lastReplacedUnit = newUnit
set newUnit = null
set oldUnit = null
set indexItem = null
return bj_lastReplacedUnit
поиграв заметил, что ты поудалял фишки у способности, которые я добавил ещё в том вопросе, жаль конечно, зря старался
то что я именно там поправил - положение юнитов, т.к. они летающие, находясь у деревьев начало магических сетей берётся над головой главной героини, а не с её торса, на уровне посоха
Komkozavr, я думал мб прога какая-нибудь есть, потому что местами казалось будто это нейронка говорит
вообще в реалиях твоей мапы надо ещё немного абилку поправить, я вроде заметил, что на здания тоже можно кастовать абилку, а если целей нет, то абилка вероятно в кд уйдёт, а надо сбивать каст
кампания не особо сильно заинтересовала, так мб предложил бы свою помощь, хотя не сказал бы, что я шарю в редакторе больше тебя
» Администрация XGM / Странный размер гифки(?)
» XGM Team / Изменить логику работу репутации
» Администрация XGM / Странный размер гифки(?)
Ред. rsfghd
» WarCraft 3 / Странные фаталы
Ред. rsfghd
» Администрация XGM / Подтверждение действий
» XGM Team / Изменить логику работу репутации
по поводу новичков, я за свои плюсы и минусы держусь как могу, если вижу, что чел в первые на хгм и вероятно ребёнок - я не захочу ответить ему, чтобы не получить рандомный минус
Ред. rsfghd
» XGM Team / Изменить логику работу репутации
» XGM Team / Изменить логику работу репутации
» Администрация XGM / Подтверждение действий
» WarCraft 3 / Анимация во время движения.
» WarCraft 3 / Как триггерно добавить бафф юниту?
Как триггерно наложить дебафф на юнита?
как дать юниту эффект?
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Как получить текущую ману и здоровье юнита?
https://www.xgm.guru/p/wc3/213915
» WarCraft 3 / Как получить текущую ману и здоровье юнита?
» WarCraft 3 / Ландшафт с освещением в Reforged
» WarCraft 3 / Галерея скриншотов ландшафта
» WarCraft 3 / Галерея скриншотов ландшафта
» WarCraft 3 / Проблема с save/load системой
» WarCraft 3 / Галерея скриншотов ландшафта
» WarCraft 3 / Суммирующиеся ауры
я просто не особо разобрал принцип, поэтому по старинке
Ред. rsfghd
» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)
но имей ввиду, хэндлы это всё что находится на карте кроме дудадов
Ред. rsfghd
» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)
» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)
Ред. rsfghd
» «Hyperion» / Закрыто
то что я именно там поправил - положение юнитов, т.к. они летающие, находясь у деревьев начало магических сетей берётся над головой главной героини, а не с её торса, на уровне посоха
» «Hyperion» / Закрыто