IzobretatelBoom, спасибо, я это использую в будущем, но сейчас немного не то. Мне нужно удалять эффект именно когда юнит умирает или меняет владельца. Эффект перманентный. Поэтому мне нужно отследить его событием.
А можешь ответить почему из хэш таблицы эффект не ловится?
IzobretatelBoom, спасибо за ответ. Но всё равно непонятно. Вот если в условии точно таким же методом сослаться не на игрока, а на юнит, то юнит прекрасно ловится.
Короче вот так окольными путями 2 часа возился. И в этом весь редактор варкрафта. В нём ничего не работает нормально. Приходится одну простую вещь колхозить непонятно как.
Но всё равно интересно, чем ему игроки не угодили. Почему через гуи он ловит владельца игрока, а через скрипт - нет?
IzobretatelBoom, мне кажется проблема в добавлении спеллбука юниту. Раньше были точно такие же фризы, когда я делал систему, которая каждую секунду удаляла у всех юнитов спеллбук, и давала его только тем кто под куполом.
В спелл буке такие способности:
Я бы предположил что это бот пытается пользоваться скиллами. Но скиллы пассивные. Даже не знаю из-за чего могут быть фризы.
но конечно выбирать случайного юнита в группе,а не всю группу перебирать эт мем, оно у тебя не будет работать нормально.
Должно робить. Все кто под куполом записываются в общую группу. И даже если все купола будут отключены, все юниты со временем переберутся и у них спеллбук удалится. Да, это будет с небольшой задержкой. Но полагаю по одному лучше для оптимизации, чем всех сразу перебирать. Просто уже есть опыт перебора большого числа юнитов. Фризит и всё. И даже 64 разряда на 1.31 не спасают.
Карта рассчитана на 24 игрока, на игру с ботами. Поэтому стараюсь делать максимально оптимизированно.
P.S.
А на счёт гуев. Я не знаю синтаксис джасса. И как мне кажется - варкрафт - это не тот случай, ради которого стоит изучать язык программирования. Всё же в эти карты особо никто не играет. Это делается больше для своего фана.
В гуях конечно менее удобно. Но по крайней мере не нужно помнить как какая функция называется, где большая а где маленькая буква ставится, и где какую функцию использовать. Если бы был условный конструктор джасса, чтобы выбиратьиз готовых функций с норм названиями и описаниями, и заполненными шаблонами внутри, то было бы наверно здорово.
konvan5, я не делаю перебор с целью оптимизации. Если перебирать всех юнитов и высчитывать им расстояние ко всем кастерам (коих может быть до 24), то игра просто утонет во фризах. Поэтому я перебираю по одному юниту рандомному, и высчитываю его расстояние к кастерам, чтобы проверить, находится ли он в данный момент под чьим-то куполом, или нет.
Вот событие:
Вот штука, которая записывает кастеров в событие триггера:
Она срабатывает каждый раз как кто-то кастует способку.
Эта штука которая срабатывает если юнит заходит в купол:
Эта штука проверяет, рандомный юнит вышел из купола или нет:
С периодичностью ещё поиграюсь.
Эта штука проверяет, способен ли герой продолжать держать купол, или нет:
Эта штука реагирует если герой отменил способность:
Ребят, к вам вопрос от нуба. А почему вы для игры создаёте инструменты, но не пользуетесь стандартным функционалом движка, в котором работаете? Имею в виду при создании уровней и всякого такого.
MACOH, а если мы отлавливаем attacked unit? Что тогда? А если у нас 24 игрока на карте? А если у нас 10 условий?
Если создать событие в триггере вызывает фриз, то это дело конечно другое. Только я про это не в курсе. Или какая ещё может быть причина чтобы этого не делать?
Это очень странно. Потому что если после создания юнита приказать последней созданной группе что либо - она выполнит приказ. И если эту группу записать в переменную, с ней ничего не произойдёт если создать нового юнита.
А можешь скинуть код? Интересно что там. Где вообще посмотреть код гуишных функций?
3.
Пауза скрывает способности юнита. Это неудобно. Надо чтобы игрок мог отдавать приказы, пока юнит стоит замороженным. Или хотя бы просто видел что приказы все на месте, просто заблочены.
MACOH, у меня есть ответы. Всё ниже описанное я узнал в процессе изучения редактора, с форумов. Если где-то неправ - поправь.
Зачем ты прикрепляешь событие смерти к каждому задетому юниту?
Можно конечно и таймер пустить. Но для этого нужна отдельная переменная. Даже две. Проще на каждого кинуть событие, затем отследить его смерть, и подчистить за ним все эффекты. А событие "юнит умирает" удалится само, когда после конца его разложения наступит "remove". Либо по истечению действия способности ресетнуть триггер.
Это делается одним триггером на общее событие смерти, в котором можно проверить убитого и убийцу (на наличие определенного баффа или тип юнита и.т.п.).
А ты логически подумай, что легче с точки зрения процессов оптимизации: проверить 300 умерших юнитов на всей карте, или без проверки триггернуться на 10 конкретно умерших юнитов?
Зачем ты во время перебора юнитов удаляешь last created group, которую ты даже не используешь?
потому что при Unit - Create unit создаётся группа. Если её не удалять, эта группа до конца карты будет висеть в памяти.
Зачем attack once, когда есть нормальная функция нанесения урона?
Потому что мне нужна способность "заморозить здание", которая останавливает все процессы у юнита. Ну и до кучи урон наносит. Если есть другие способы как заморозить юнит, без использования Pause, буду рад узнать.
PUVer, порог вхождения в варике конечно низкий. Зато на более высоком уровне редактирование превращается в костыли. Где на каждый чих нужен свой танец с бубном. Не понятно как что работает, нигде ничего не описано. Надо по всему интернету искать, удаляются ивены из триггера или нет. Народ вынужден спрашивать как отловить лучницу, которая слезла с гиппогрифа.
IzobretatelBoom, прикольная вещь. Но получается, что если у меня 24 игрока, то мне придётся каждые 0,01 секунды выбирать рандом юнита со способкой и проверять его расстояние для каждого героя со включенной способностью?
» WarCraft 3 / Можно ли как-то узнать версию игры через триггеры? Там же в…
» WarCraft 3 / Удаление спецэффектов с задержкой на гуях для глупеньких
Ред. WilliamBz
» WarCraft 3 / Не достаётся эффект из хэш таблицы.
» WarCraft 3 / Почему компилятор не хочет сравнивать двух игроков?
» WarCraft 3 / Не достаётся эффект из хэш таблицы.
Ред. WilliamBz
» WarCraft 3 / Почему компилятор не хочет сравнивать двух игроков?
Ред. WilliamBz
» Melee Campaign Heroes / Melee Campaign Heroes | Видеоролики
Попытка победить за малгАНУСА против Артеса и 3 сильных компов в 4 актах
» Melee Campaign Heroes / Melee Campaign Heroes 0.9.7 Warships
Ред. WilliamBz
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…
Ред. WilliamBz
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…
-
izobrazhenie_copy4.png
-
izobrazhenie_copy5.png
Полный списокРед. WilliamBz
» The Scouring / Гайды на редактор карт и модов
» The Scouring / Улучшаем игровой интерфейс The Scouring: идеи и предложения
» The Scouring / Мультиплеерное демо уже доступно!
Ред. WilliamBz
» WarCraft 3 / Может быть такое, что если заспавнить боту юнит и приказать…
Ред. WilliamBz
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…
» WarCraft 3 / Может быть такое, что если заспавнить боту юнит и приказать…
Ред. WilliamBz
» WarCraft 3 / Может быть такое, что если заспавнить боту юнит и приказать…
» The Scouring / Руководство по моддингу
» The Scouring / The Scouring
» WarCraft 3 / Есть ли способ удалить событие из триггера? Если в триггере…
» WarCraft 3 / ResetTrigger
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…
Если меньше то фризит.
» WarCraft 3 / Есть ли способ удалить событие из триггера? Если в триггере…
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…
Ред. WilliamBz
» WarCraft 3 / Какие есть методы оптимизации триггеров при переборе юнитов?…