Это заклинание массового урона, в радиусе от цели, проблема в утечках, одна утечка заключается в удалении не всех спецеффектов с юнита. А вторую я не нашел... Как удалить все спецефекты после конца каста и где вторая утечка?

Принятый ответ

Alexey103, а у меня работает, проверял. тут ошибка в названии переменной, скорее всего, зачем ты задал такое. Мб оно слишком длинное и через нижнее подчеркивание? и путь модель указывают в jass не через один обратный слэш "/", а через двойной слэш "//". Это на гуи один, на джаз два слэша
0
23
6 лет назад
0
Спецы не утекают, но это не точно
ПС перед уничтожением группы очисти ее (Remove All units), мб поможет.
ПСС бжшный пик юнитов утекает сам по себе, но он настолько незначителен, что потребуется реально ОГРОМНОЕ время игры, чтобы начало лагать.
0
27
6 лет назад
Отредактирован MpW
0
утечки: Units within 300 pos - бж функция, если раскрыть ее, то можно увидеть как там не обнуляются локалки
по поводу спецэффектов - попробуй воткнуть внутрь цикла ForGroup (на гуи Pick Every unit in group and do (action) ) локалки. Тогда точно все будут удаляться. Еще точнее прописать CS
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl",GetEnumUnit(),"overhead"))
1
18
6 лет назад
1
Вместо создания и удаления эффекта попробуй удалить сразу. Для этого нужно использовать личный сценарий (custom script):
call DestroyEffect (AddSpecialEffect ("Objects\\Spawnmodels\\Human\\HumanLargeDeathExplode\\HumanLargeDeathExplode.mdl", GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit())))
Вместо взрыва напиши путь к своему эффекту. Но может не сработать, если анимация модели не подойдёт.
Ещё вариант: записывать эффекты в переменные и удалить их циклом.
0
17
6 лет назад
0
Obelick, А при скольки утечках лагать начинает? И если ты загружаешь карту заново утечки сохраняются?
Maniac_91, Хм, посмотрю, хотя не вижу разницы между удалением джассом и обычным. А вот насчёт цикла, я думаю можно заносить каждую переменную в массив и очистить его после каста, но это требует нескольких глобалок, и типа запутано.
Steal nerves, О точно, циклом же можно. Ну так если там не обнуляются локалки то как обнулить? Неужели кастом скрипт не поможет. Нужно решение ааа. Кстати помоему у меня уже была такая проблема когда я систему диалогов делал. И там мне кучу джасса прислали но так я и не решил её, и вот опять...
0
23
6 лет назад
Отредактирован Obelick
0
Alexey103, конечно загружаются, они остаются в памяти до конца игры. Запили себе хендлкаунтер и отслеживай, но опять же, если даже у тебя 50+ таких заклинаний, которые срабатывают раз в секунду, то даже в таком случае у тебя времени предостаточно. Лично у меня начинались лаги, когда сохранение игры весило 40 мб+, а затем следовали фаталы, можешь отслеживать по этому факту. Главное всегда чистить и удалять то, что возможно.
0
17
6 лет назад
0
Obelick, У меня он есть, просто я не проверял. Я просто делаю наработки, не только для личного пользования, и поэтому такой внимательный. Дело в том что я не хочу делать маленькие карты, а когда делал большие уже дважды забрасывал. И решил подойти с другой стороны. Делаю отдельные интересные элементы в виде наработок. И лишь если они идеальны потом может их использую в карте.
2
27
6 лет назад
Отредактирован MpW
2
Maniac_91, Хм, посмотрю, хотя не вижу разницы между удалением джассом и обычным.
ну есть предположение, что переменная "последний созданный спецэффект" перезаписывается, и возможно из-за этого что-то не до конца работает. По идее так не должно быть. тогда либо локалка либо сразу удаляй как выше сказали
ForGroup - цикл, вызывает функцию.
но лучше сразу удаляй
Ну так если там не обнуляются локалки то как обнулить?
необнуленная локалка приводит к утечке
Загруженные файлы
0
20
6 лет назад
0
Скорее всего не удаляются точки и само наличие спецэффекта. Приложенный поинт спецеффекта вынести отдельно в локалку и ремувить.
0
18
6 лет назад
0
DemonoiD, проще уж через координаты эффект вешать или на юнита, чтоб не было лишних действий.
0
20
6 лет назад
0
Maniac_91, все равно будут утечки. Я на это напаролся 10 лет назад, когда первый раз открыл варик и подумал, что кучу эффектов Блад с вейтами это круто. Точки не обнуляются по завершению эффекта. Так же не обнуляются при "дать предмет герою". Да и вообще нигде не обнуляются(
0
18
6 лет назад
Отредактирован Maniac_91
0
DemonoiD, согласен, что точки сами не удалятся. Но при создании эффекта по координатам (или на юните) не создаётся точка. Когда эффект цепляется на юнита, то он удалится после его смерти. То есть в обоих этих случаях утечка будет только одна - неудалённый эффект. От неё мы избавляемся, удаляя эффект при создании (call DestroyEffect (AddSpecialEffect...)), если у него анимация смерти нормальная или через некоторое время, предварительно сохранив каждый эффект в переменную-массив.
Alexey103, массив тоже можно создать локальный:
local effect array e
0
20
6 лет назад
Отредактирован DemonoiD
0
Maniac_91, Ниет. Как же дать итем монетка? Я могу дать 100 монеток, увести юнита и лагать будет там, где я давал монетки, а не где стоит юнит. Причём после убийства этого юнита все равно лагает. Или тут иной заговор?
0
18
6 лет назад
0
DemonoiD, дело в том, что усиливающие предметы не исчезают полностью.
Вот ссылка на статью.
0
17
6 лет назад
0
Maniac_91, Ну да я всегда удалялку рун и книг делаю
Steal nerves, Та я согласен, спасибо за скрин, попробую так, вот с убиранием второй утечки, там вообще непонятно. И вообще в крайнем случае эффект можно аурой или ещё как накладывать. Взять базовую абилку типа звездопада.
Steal nerves, Вобщем я устранил ту утечку группы двумя целительными джасс костылями, а вот со спецэффектами не прокатило, вроде переписал как у тебя на скрине и подставил нужный эффект, но выдаёт ошибку.
Загруженные файлы
2
27
6 лет назад
Отредактирован MpW
2
Alexey103, а у меня работает, проверял. тут ошибка в названии переменной, скорее всего, зачем ты задал такое. Мб оно слишком длинное и через нижнее подчеркивание? и путь модель указывают в jass не через один обратный слэш "/", а через двойной слэш "//". Это на гуи один, на джаз два слэша
Принятый ответ
1
30
6 лет назад
Отредактирован Clamp
1
ошибка в названии переменной, скорее всего, зачем ты задал такое
Название переменных ни на что не влияет, проблема в том, что в пути нужно ставить двойные бэкслеши, чтобы они экранировали сами себя: "Abilities\\Spells\\Other..." , о чём ясно написано в тексте ошибки, и она даже повторяется столько же раз, сколько там неэкранированных бэкслешей.
А название после парсера cJass, судя по всему.
0
26
6 лет назад
0
Alexey103, вот так тебе надо сделать.
Загруженные файлы
0
17
6 лет назад
0
Steal nerves, Я там просто букву е написал, хм может то русская буква е а нужно англ. Ща поменяю. Так или иначе, спасибо, слеши дописал, буквы поменял всё заработало) Утечек нет, на всякий случай схороню эту команду в текстовом файле для джасс костылей.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.