WarCraft 3: Отображение Урона\Система атаки

Просмотров: 11 899

» Лучшие комментарии


nvc123 #1 - 6 лет назад 1
каждый раз когда атакуем юнита к триггеру добавляется событие
и пофиг что это событие уже есть
Buulichkaa #2 - 6 лет назад 1
я не понимаю каким ракообразным это надо, но опубликовал...
nvc123 #3 - 6 лет назад 1
и в результате триггер запускается несколько раз
Buulichkaa, не публикуй
пример баганый
простейший дебаг во 2 триггере показывает что с каждой атакой по юниту количество выполнений триггера при получение урона увеличивается на 1
таким образом если юнита атаковали 5 раз то при получение урона триггер запустится 5 раз
и получается совершенно ложный результат
например если во 2 триггере не просто создавать плавающий текст а дамажить юнита то получается многократный урон
+ оператива тратиться зря
вот правильный пример
специально на гуи
прикреплены файлы
Sergant1000 #4 - 6 лет назад 0
nvc123, твой пример лучше но количество действий копится от добавленных юнитов.
Buulichkaa #5 - 6 лет назад 0
У меня руки отпадают при виде этого ресурса ='((( что с миром
Sergant1000 #7 - 6 лет назад 0
nvc123, как же не копиться, каждый раз когда юнит входит в игровую карту, во второй тригер добавляется действие с этим юнитом. соответственно умер юнит а действие осталось.
nvc123 #8 - 6 лет назад 0
Sergant1000, если юнит умер то действие не произойдёт ибо некого дамажить
ты какую то ересь несёшь
и вобще действие лишь 1
просто в изначальном примере триггер запускался несколько раз
тут такой лажи нету
советую почитать про выполнение кода в вар3
Timoxxx #9 - 6 лет назад 0
nvc123, Действия нет, но событие остается, верно?
nvc123 #10 - 6 лет назад 0
Timoxxx, события нельзя удалять
и толку от события если юнит привязанный к нему мёртв
так что в моём примере всё ок
Timoxxx #11 - 6 лет назад 0
и толку от события если юнит привязанный к нему мёртв
Тем не менее - событие остается в памяти. И как быть рпг картам, где каждые 5 минут появляются с полсотни новых юнитов?
события нельзя удалять
А если удалить триггер, к которому привязано событие? Это не гуи, конечно, но все-таки интересно знать.
nvc123 #12 - 6 лет назад 0
Timoxxx, тут мнения расходятся
часть тестов показали что события висят в памяти
другая часть что они удаляются
Timoxxx, полсотни новых событий займёт меньше памяти чем 1 триггер с 1 событием
ведь событие это лишь регистрация юнита в системе
а триггер это полноценный объект
Sergant1000 #13 - 6 лет назад (отредактировано ) 0
nvc123, забей, все равно без джасс его полностью не оптимизируешь.
Buulichkaa #14 - 6 лет назад 0
Sergant1000, мыслим в правильном направлении
nvc123, выполнение задания [1%] завершено
nvc123 #15 - 6 лет назад 0
Sergant1000, он и так оптимален
во всяком случае 1 триггер, который я писал
nvc123 #17 - 6 лет назад 0
Clamp, я тоже так думаю но гугл даёт кучу мнений(многие из которых написаны нубами гуишниками)
Clamp #18 - 6 лет назад 0
А я располагаю фактами, которые, если вдруг кому захочется, можно раскопать в темах на форуме.
На эту тему Toadcop, J и, по моему, ADOLF провели весьма ёмкое исследование.
Audes #19 - 5 лет назад 0
Извините за археологию, но думаю, что в примере правильнее проверять есть ли юнит в группе N и если нет, то заносить в группу и добавлять событие. Так не будет множества событий для одного юнита.
nvc123 #20 - 5 лет назад 0
Audes, юнит не может дважды войти в игровую зону
так что проверка не имеет смысла
Int3r_Karma #21 - 4 года назад 0
Я считаю, что эти заметки необходимо внести в саму статью:
Clamp:
События привязаны к объектам и очищаются при смерти объекта.
Audes:
Извините за археологию, но думаю, что в примере правильнее проверять есть ли юнит в группе N и если нет, то заносить в группу и добавлять событие. Так не будет множества событий для одного юнита.
nvc123:
Audes, юнит не может дважды войти в игровую зону
так что проверка не имеет смысла
Чтобы полностью развеять сомнения.
nvc123 #22 - 4 года назад 0
vincent_freeman, это статья лишь пример
да ещё и на гуи
если кого то интересует оптимизация то стоит почитать про неё отдельно статьи
а там уже написано что событие не утекает
а по поводу того что юнит не может дважды войти в игровую зону это ещё не подтверждено
хотя и не опровергнуто
5 комментариев удалено
PT153 #28 - 5 месяцев назад (отредактировано ) 3
Clamp, может пять лет назад так и было, но не так давно я проводил простое исследование на 1.26а, события не очищаются даже при удалении юнита (и при убийстве с дальнейшим разложением).
Вот карта, где просто пишутся в файл хендлы событий. Как видим, они не повторяются, а значит каждый раз создаётся новое событие, а старое висит в памяти.

Но, как я полагаю, размер события весьма мал, потому проблем это не вызовет.
прикреплены файлы
Sergarr #29 - 5 месяцев назад 0
PT153:
Clamp, может пять лет назад так и было, но не так давно я проводил простое исследование на 1.26а, события не очищаются даже при удалении юнита (и при убийстве с дальнейшим разложением).
Вот карта, где просто пишутся в файл хендлы событий. Как видим, они не повторяются, а значит каждый раз создаётся новое событие, а старое висит в памяти.

Но, как я полагаю, размер события весьма мал, потому проблем это не вызовет.
Патч 1.26а вышел в 2011 году, а "5 лет назад" это 2014 год. События точно утекают? Может быть, они просто не сразу удаляются?
Clamp #30 - 5 месяцев назад 0
Sergarr, стоит заметить, что на момент моего сообщения в этом треде исследование уже было проведено довольно давно. Тем не менее, не вижу никаких причин, по которым бы с тех пор этот аспект мог измениться
PT153 #31 - 5 месяцев назад (отредактировано ) 0
События точно утекают?
За 20 секунд ни одно событие не было удалено (это видно по хендлам), скорее всего утекают. Можно поставить выход на большее время.
Clamp, я так понимаю, что исследование проводилось на старом форуме XGM. Сохранились ли ссылки на него?

При этом все хендлы событий освобождаются при удалении триггера.
Clamp #32 - 5 месяцев назад 0
PT153, сейчас с форумом какие-то технические проблемы, но, думаю, поискать можно ещё. Сам этим заниматься вряд ли буду.
PT153 #33 - 5 месяцев назад (отредактировано ) 0
Вот немного изменённая версия карты. Провёл 2 теста (оба по 20 секунд): в одном юнит удалялся, в другом убивался. И там, и там по событиям результат одинаковый. Репорт с удалением, репорт с убийством.

Провёл тест в 120 секунд с удалением, результат тот же.
прикреплены файлы
Clamp #34 - 5 месяцев назад 0
Возможно, утекает только хендл, а объект в памяти умирает, например. Не могу судить, да и теперь уже в целом всё равно.
PT153 #35 - 5 месяцев назад 0
Clamp, тоже так подумал, это можно проверить по потреблению памяти, но уже позже.