function UnitAdd10AttackSpeed takes unit u returns nothing

 set bj_lastCreatedItem = CreateItem('I000', 0., 0.)
 call UnitAddItem(u, bj_lastCreatedItem)
 call RemoveItem(bj_lastCreatedItem)

endfunction
Собственно, появляется руна, дается юниту, к руне прикреплена способность на основе 'Auhf'. При каждом вызове функции стабильно 1 утечка. Не могу понять почему. Утечка именно в функции.

Только что потестил, руны, как объекты не вычищаются от времени после поднятия, также не работает RemoveItem(), но можно удалить их до того как взял
Да, действительно, если удалять руну через RemoveItem() в событии EVENT_PLAYER_UNIT_PICKUP_ITEM. То дается баф и утечек нет
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
1000 итераций, и ровно на 1000 растет счетчик, руны удаляются, ошметков на земле нету и спецэффектов тоже.

Не в модели руны точно дело, ибо там на 100 рунах уже идет просадка фпс.
Загруженные файлы
1
Попробовал триггерно удалять способность, которая дается руной, и, баф, который дается этой способностью ; перед окончанием действия способности. Без результата
32
ttoni, нет это не баффы, явно, и не абилки - да и там думаю хендл коюнтер бы не отреагировал бы даже если они утекают, т.к он просто считает сколько ссылок было выделено, относительно некой базовой. Возможно остаются висеть ссылки, хотя сам предмет точно удаляется, я проверял ставя дефолт модель и вручая руны в тест карте, если бы модели оставались модели - была бы знатная просадка фпс, а так даже с 0.00 таймером никаких просадок.
1
function UnitAdd10AttackSpeed takes unit u returns nothing
call UnitAddItem(u, udg_critChanceRune)
call RemoveItem(udg_critChanceRune)
set udg_critChanceRune = CreateItem('I000', 0., 0.)// Первая руна создается при старте карты
endfunction
Также не работает. Подумал, что может создаваться утечка в ядре, когда только создаешь и сразу удаляешь.
32
ttoni, если не подбирать руны - самое смешное что счетчик не растет...
1
Только что потестил, руны, как объекты не вычищаются от времени после поднятия, также не работает RemoveItem(), но можно удалить их до того как взял
1
Только что потестил, руны, как объекты не вычищаются от времени после поднятия, также не работает RemoveItem(), но можно удалить их до того как взял
Да, действительно, если удалять руну через RemoveItem() в событии EVENT_PLAYER_UNIT_PICKUP_ITEM. То дается баф и утечек нет
Принятый ответ
38
Где-то я такое видел))
Вот так элегантнее решали:
  • юнит получает/использует/теряет предмет (с какими событиями работает переменная "манипулирующий предмет", в твоем случае получает/использует)
  • класс манипулирующего предмета == усиливающий
  • удалить (манипулирующий предмет)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.