Без мемхака не обойтись, получается, если без костылей.
Имхо, но смотря для какой цели. Всё же, написание универсальной системы и написание системы для конкретного случая - разные задачи.
Вполне может быть что для конкретной задачи возможно создание простой и бескостыльной системы.
Я-то над своей особо не думал, с тз алгоритма, и реализовал первое что пришло в голову. На удивление оно даже заработало, пусть и косячно. Можно сказать это была первая осмысленная попытка в jass...
Но если ставить вопрос именно про запрет подбора предмета, и подразумевать что двух одинаковых быть не может в инвентаре, то можно при подборе дропать предмет, а если нет такого же типа, то подбирать обратно.
Собственно, вот карта с демонстрацией идеи и скрин триггера. (В прикреплённых файлах)
Что лучше, чем бред с постоянным созданием и удалением триггеров.
Как я понимаю, правильное удаление триггера не оставляет утечек. Каждый такой триггер живёт непродолжительное время, если добавить соответствующее событие.
Я не особо смотрел на производительность, но четыре сотни стрелков с задержкой между атаками 0.4 тормозили не больше чем любые другие четыре сотни сражающихся юнитов.
Так почему это бред?
С наработкой детекта урона из мемхака у тебя появляется возможность проверять типы урона и прочие параметры в потоке любого триггера, сработавшего на событие - юнит получает урон.
кстати там какраз выше производительность.
map_maiker, юнит входит на карту, на него и добавляем событие на получение урона. Всё. А все эти костыли с событием на атаку бред. Тем более, что это замах, а не сама атака. И на каждый замах по новому триггеру - бред.
Звучит как создание одного громоздкого триггера... quq_CCCP:
map_maiker, с мемхаком куда веселее, просто смотришь тип урона и атаки.
К мемхаку я только присматриваюсь. Издалека. Мб и до него руки дойдут.
Да, я нашёл эту функцию, но не очень ясно как её применить. Кстати, можно как-то распечатать результат что она возвращает? I2S(GetTriggerEventId) ошибку выдаёт.
Кстати, ты можешь делать намного интереснее вещи с триггерной атакой, вплоть до кривой цепной молнии скакающей по юнитам накладывающая дебаффы с отталкиванием и всей ерундой что только можешь придумать
во первых время существования триггера нужно, вдруг промах,
Да, в случае промаха урон просто откладывается. Но я не придумал как можно прицепить удаление триггера по времени. Самый правильный вариант - добавить событие в триггер, но... В общем, как это сделать чтобы работало - я не придумал.
map_maiker, Filter() - в твоём случае позволит подставить вместо функции, которая должна возвратить boolean, подставить функцию, которая возвращает nothing
map_maiker, лол, как ты вообще работаешь с кодом в обычном редакторе?
Многое теряешь без джнгп, и скорее всего, мою версию не заценишь
jasscraft есть. Так-то, я раньше особо не писал на jass, недавно вот решил что гуи сковывает. Изначально я хотел на гуи написать эту систему, но вышла хрень. Неработающая как надо, что важно.
На счёт твоей версии - мб и заценю...
Нет, не оптимально, юзаешь точки вместо координат и даже не обнуляешь их, переменные юнитов тоже не обнулил, таймеры не обнуляешь, да и локальные триггеры тоже в null можно
Хм, ясно. А хеш-таблицу по ключу не надо очищать?
А сама идея норм или есть лучше варианты? С тз алгоритма.
map_maiker, а где ты такое событие видел? Это не юнит замазнулся а именно вылет снаряда когда атаку уже отменить нельзя и все модификаторы готовы.
По идее, можно отслеживать урон. Сделать модельке юнита отсутствие снаряда и отслеживать нанесение урона цели, блочить урон и наносить самостоятельно, с нужными эффектами.
Можно сделать предмет со сопособностью-пустышкой, а потом применять нужную способность при касте.
А если способность пассивная, то можно добавить спеллбук с этой способностью и, если не путаю, запретить его - чтобы не видно было.
Да ошибся в выборе языка, я уже всё показал как это делает на нормальном языке, тем более в рефе, без хештаблиц и прочей ерунды. И тут динамиеский триггер и таймер, вы сами себе проблемы придумали на ровном месте
» WarCraft 3 / Запуск .exe из архива карты
» WarCraft 3 / Отследить удар рукой
» WarCraft 3 / Отследить удар рукой
Так-то способов много.
Ред. map_maiker
» WarCraft 3 / Одинаковые предметы
» WarCraft 3 / Отследить какое событие вызвало триггер
» WarCraft 3 / Оптимальна ли реализация?
Я не особо смотрел на производительность, но четыре сотни стрелков с задержкой между атаками 0.4 тормозили не больше чем любые другие четыре сотни сражающихся юнитов.
Так почему это бред?
quq_CCCP:
» WarCraft 3 / Оптимальна ли реализация?
quq_CCCP: К мемхаку я только присматриваюсь. Издалека. Мб и до него руки дойдут.
» WarCraft 3 / Отследить какое событие вызвало триггер
» WarCraft 3 / Отследить какое событие вызвало триггер
biridius:
К слову, эта функция универсальна? Для любых событий?
» WarCraft 3 / Отследить какое событие вызвало триггер
» WarCraft 3 / Оптимальна ли реализация?
PT153:
quq_CCCP:
» WarCraft 3 / Оптимальна ли реализация?
На счёт твоей версии - мб и заценю...
» WarCraft 3 / Оптимальна ли реализация?
» WarCraft 3 / Оптимальна ли реализация?
rsfghd:
makkad: Хм, а что Filter делает?
» WarCraft 3 / Оптимальна ли реализация?
call TriggerAddCondition( gg_trg_attacking, function Trig_attacking_Actions )
и оно будет работать?
rsfghd:
» WarCraft 3 / Момент запуска снаряда
» WarCraft 3 / Как изменять размер/окраску спецэффекта
» WarCraft 3 / Редактирование рельефа средствами jass
» WarCraft 3 / Добавить/убрать способности у предмета во время игры
А если способность пассивная, то можно добавить спеллбук с этой способностью и, если не путаю, запретить его - чтобы не видно было.
» WarCraft 3 / Момент запуска снаряда
» WarCraft 3 / Благодать\Свет небес паладина
» WarCraft 3 / Редактирование рельефа средствами jass
Vlod:
» WarCraft 3 / Действие с задержкой
Ред. map_maiker
» WarCraft 3 / Насчёт косвенной работы книги заклинаний
» WarCraft 3 / Блокировка приказов