Я решил проверить, насколько серьезны будут утечки, если не обнулять локалки, используя множественный запуск нижеописанной функции.
В результате небольшого наблюдения можно увидеть, что при этом, занимаемое место в таблице хэндлов растет, и она сама раздувается, за счет периодических перевыделений памяти, что, при больших количествах таких утечек вызовет лаги при, собственно, перевыделении, и, при достаточном терпении, окончание доступной памяти. (Однажды сам столкнулся с проблемой вылета на такой карте из-за стандартной и проблемной стандартной функции CountLivingPlayerUnitsOfTypeId, после более чем трех часов игры, после того, как в нее были внесены исправления в области обнуления локалок, криты прикратились)
Конечно, это не быстро, но не менее 3х байт за не до конца обнуленные ссылки на хэндл, что можно пронаблюдать на видео, а, при желании, и повторить самому.
EugeAl: Расист! И вообще, речь идет о сказочном мире, где люди каждый день борются за свое существование на огромном космическом корабле древних. Ни о какой историчности и речи нет. Так что ваши без сомнений расистские опревдания выглядят не серьезно на фоне суровой реальности. Но Модельки классные, мое уважение.
Есть проверенная информация, что число потоков в 1.26 может быть больше одного 😀
А скорость загрузки карты из редактора - очень оптимистичная, на практике, в обоих случаях в более менее больших картах с приличным количеством объектов счет идет на минуты
Про размер карт кстати не правда: В одиночной игре размер во всех версиях ограничен в первую очередь здравым смыслом, а с патчем я запускал карты размером как минимум пол гигабайта по сети, на Ирине же, например, насколько я помню, лимит размера карт - 350 мб?!
Специфические особенности абилок. Ополченец и метаморфоза - меняют форму юнита, но при смерти метаморфоза не возвращает форму, более того, даже не диспелится полноценно, по тем или иным причинам, а ополчение - возвращает. Аватар морфом не является, это просто рядовой баф, спадающий по смерти.
Вероятно, логику в этом найти достаточно трудно.
Событие: Юнит входит в область.
Условие: Нужный юнит
Действие: Для всех юнитов в области виспов:
Действие: Если юнит - висп и принадлежит владельцу юнита
то: Убить его
В силу неоднообразности реализации классификаций, не все из них можно выдать или удалить вручную. Проверяйте через добавление и проверку на наличие, что классификация вообще выдалась.
Конкретно указанная классификация, как и многие другие выдана быть не может.
SetUnitPosition - корректно двигает юнитов, не умеющих двигаться, но сбивает приказ и т.д.
SetUnitX/Y - Корректно двигает только юнитов, которые умеют самостоятельнно передвигаться, хотябы потенциально (имеют абилку 'Amov'). Не сбивает приказ, своего перемещения юнит даже не замечает. Но если юнит двигаться не умеет - таким образом он не переместится полноценно.
Могли бы посмотреть что делает GetForceOfPlayer перед сомнительным использованием.
function GetForceOfPlayer takes player whichPlayer returns force
local force f = CreateForce()
call ForceAddPlayer(f, whichPlayer)
return f
endfunction
Взять pjass из папки редактора или любого другого источника, тоже самой с common и blizzard, вытащить war3map.j или что ты там хочешь проверять, все это сложить в одну папку.
Открыть консоль, как вариант: win+r -> cmd
Перейти в ту папку, куда ты все сложил. (как вариант - cd /d <папка> в консоли)
в консоли:
Замечу, что регистрировать ивент на вход юнита на карту и проверять, что он на карте отутствует после этого - достаточно странно, это условие не может выполниться.
Можно самому посмотреть что делает та или иная функция. Например PauseUnitBJ в 1.26 моем варкрафте делает следующее:
function PauseUnitBJ takes boolean pause, unit whichUnit returns nothing
call PauseUnit(whichUnit, pause)
endfunction
Итого, в 26 варкрафте с стандартном близарджи она просто меняет местами 2 аргумента и не должна вызвать утечек. Как с этим на других версиях - нужно смотреть там.
Но, в основном эти функции - прослойки для того, чтобы потенциально сохранить совместимость при переходе на более старшие версии игры с заметными изменениями в апи. Где моя обнова, близард?
Самое простое - сделать 2 разных триггера, выключенных изначально, в одном давать всем, а в другом только убийце. При выборе мода включать нужный триггер.
Ред. goodlyhero
» WarCraft 3 / Jass MythBusters
Конечно, это не быстро, но не менее 3х байт за не до конца обнуленные ссылки на хэндл, что можно пронаблюдать на видео, а, при желании, и повторить самому.
» WarCraft 3 / По поводу мемхака и изменению параметров способностей.
» WarCraft 3 / Пак моделей Heroes III (Замок)
Расист!
И вообще, речь идет о сказочном мире, где люди каждый день борются за свое существование на огромном космическом корабле древних. Ни о какой историчности и речи нет.
Так что ваши без сомнений расистские опревдания выглядят не серьезно на фоне суровой реальности.
Но Модельки классные, мое уважение.
» WarCraft 3 / Пак моделей Heroes III (Замок)
Это Эоваций в кольчужной шапке.
Ред. goodlyhero
» WarCraft 3 / Сравнительная таблица Reforged и 1.26
Ред. goodlyhero
» WarCraft 3 / Сравнительная таблица Reforged и 1.26
» WarCraft 3 / Как сделать нужную анимацию смерти у ополченца
Вероятно, логику в этом найти достаточно трудно.
» WarCraft 3 / редактировать карту не заходя в world editor?
Ред. goodlyhero
» WarCraft 3 / Условие убийства виспов
Условие: Нужный юнит
Действие: Для всех юнитов в области виспов:
Действие: Если юнит - висп и принадлежит владельцу юнита
то: Убить его
» WarCraft 3 / Условие убийства виспов
» WarCraft 3 / Предмет через руну
» IrInA Host Bot / Игра без irina connector
» WarCraft 3 / как использовать добавление классификации юнита?
Конкретно указанная классификация, как и многие другие выдана быть не может.
Ред. goodlyhero
» WarCraft 3 / анимация движения объекта
SetUnitX/Y - Корректно двигает только юнитов, которые умеют самостоятельнно передвигаться, хотябы потенциально (имеют абилку 'Amov'). Не сбивает приказ, своего перемещения юнит даже не замечает. Но если юнит двигаться не умеет - таким образом он не переместится полноценно.
Ред. goodlyhero
» WarCraft 3 / Нужны ли иконки приказа?
» WarCraft 3 / GetCameraField + GetLocalPlayer = ошибка
Ред. goodlyhero
» WarCraft 3 / Как использовать Jasshelper без редактора?
Открыть консоль, как вариант: win+r -> cmd
Перейти в ту папку, куда ты все сложил. (как вариант - cd /d <папка> в консоли)
в консоли:
» WarCraft 3 / Почему юнита не добавляет в группу
Ред. goodlyhero
» WarCraft 3 / утечна ли call PauseUnitBJ
Но, в основном эти функции - прослойки для того, чтобы потенциально сохранить совместимость при переходе на более старшие версии игры с заметными изменениями в апи.
Где моя обнова, близард?
» WarCraft 3 / как сделать мод?
» WarCraft 3 / как сделать мод?
Ред. goodlyhero
» WarCraft 3 / Восстановить юнитов, предметы и абилки из slk
в режиме To Obj, с галкой ReadSlk
Ред. goodlyhero
» WarCraft 3 / Лог вылета
» WarCraft 3 / Лог вылета
» WarCraft 3 / Как сидеть на двух стульях. Совмещаем 1.26 и Reforged.