9

» WarCraft 3 / Запуск .exe из архива карты

quq_CCCP:
Обычно все юзают длл, подгружая её в процесс игры и используя её функции в игре. Так то конечно, все что предлагает WINAPI будет работать.
Это с мх?
9

» WarCraft 3 / Отследить удар рукой

Без мемхака не обойтись, получается, если без костылей.
Имхо, но смотря для какой цели. Всё же, написание универсальной системы и написание системы для конкретного случая - разные задачи.

Вполне может быть что для конкретной задачи возможно создание простой и бескостыльной системы.

Я-то над своей особо не думал, с тз алгоритма, и реализовал первое что пришло в голову. На удивление оно даже заработало, пусть и косячно. Можно сказать это была первая осмысленная попытка в jass...
9

» WarCraft 3 / Одинаковые предметы

Бот, в общем-то, ответил.

Но если ставить вопрос именно про запрет подбора предмета, и подразумевать что двух одинаковых быть не может в инвентаре, то можно при подборе дропать предмет, а если нет такого же типа, то подбирать обратно.

Собственно, вот карта с демонстрацией идеи и скрин триггера. (В прикреплённых файлах)
Загруженные файлы
9

» WarCraft 3 / Отследить какое событие вызвало триггер

Окей, судя по всему это и есть ответ. Если нечего добавить, то так отмечу.
PT153:
GetTriggerEventId()
map_maiker:
biridius:
>map_maiker, в жнгп можно посмотреть все доступные "константы" ивентов через FunctionList
Это и в common.j посмотреть можно.
PT153:
К слову, эта функция универсальна? Для любых событий?
Да.
9

» WarCraft 3 / Оптимальна ли реализация?

Что лучше, чем бред с постоянным созданием и удалением триггеров.
Как я понимаю, правильное удаление триггера не оставляет утечек. Каждый такой триггер живёт непродолжительное время, если добавить соответствующее событие.
Я не особо смотрел на производительность, но четыре сотни стрелков с задержкой между атаками 0.4 тормозили не больше чем любые другие четыре сотни сражающихся юнитов.
Так почему это бред?
события - юнит отдал приказ - цель точка, цель обьект, без указания цели,
А почему это не подойдёт к ренжам? В контексте отслеживания обычной атаки, не способностями.
quq_CCCP:
ренжам - только собтие время вышло (примерное время за сколько долетит снаряд до цели +- секунда)
А зачем +- секунда?
С наработкой детекта урона из мемхака у тебя появляется возможность проверять типы урона и прочие параметры в потоке любого триггера, сработавшего на событие - юнит получает урон.
кстати там какраз выше производительность.
Хм, ясно.
9

» WarCraft 3 / Оптимальна ли реализация?

PT153:
map_maiker, юнит входит на карту, на него и добавляем событие на получение урона. Всё. А все эти костыли с событием на атаку бред. Тем более, что это замах, а не сама атака. И на каждый замах по новому триггеру - бред.
Звучит как создание одного громоздкого триггера...
quq_CCCP:
map_maiker, с мемхаком куда веселее, просто смотришь тип урона и атаки.
К мемхаку я только присматриваюсь. Издалека. Мб и до него руки дойдут.
9

» WarCraft 3 / Отследить какое событие вызвало триггер

Потому что скобки и конверт в хендлайди забыл.
Это я в комментарий скобки забыл и не заметил сразу.
9

» WarCraft 3 / Отследить какое событие вызвало триггер

map_maiker, в жнгп можно посмотреть все доступные "константы" ивентов через FunctionList
Это и в common.j посмотреть можно.
biridius:
с ними и можно сравнивать GetTriggerEventId()
Я думал об этом. Возможно недостаточно, ибо одну очевидную идею я не проверил.
К слову, эта функция универсальна? Для любых событий?
9

» WarCraft 3 / Отследить какое событие вызвало триггер

GetTriggerEventId()
Да, я нашёл эту функцию, но не очень ясно как её применить. Кстати, можно как-то распечатать результат что она возвращает? I2S(GetTriggerEventId) ошибку выдаёт.
9

» WarCraft 3 / Оптимальна ли реализация?

Кстати, ты можешь делать намного интереснее вещи с триггерной атакой, вплоть до кривой цепной молнии скакающей по юнитам накладывающая дебаффы с отталкиванием и всей ерундой что только можешь придумать
Да, я знаю. Дамми-касты и всё такое. rsfghd:
Чистый гуи да, но у тебя есть кастом скрипт, где можно обнулить точки и это всё, что в принципе нужно, чтобы эта система работала без утечек
Я же не про утечки. Например, как в гуи прицепить функцию к таймеру?
PT153:
А по теме - динамическое создание триггеров тут не нужно.
А можно подробнее?
quq_CCCP:
во первых время существования триггера нужно, вдруг промах,
Да, в случае промаха урон просто откладывается. Но я не придумал как можно прицепить удаление триггера по времени. Самый правильный вариант - добавить событие в триггер, но... В общем, как это сделать чтобы работало - я не придумал.
9

» WarCraft 3 / Оптимальна ли реализация?

makkad:
map_maiker, Filter() - в твоём случае позволит подставить вместо функции, которая должна возвратить boolean, подставить функцию, которая возвращает nothing
Хм, любопытно.

rsfghd:
map_maiker, лол, как ты вообще работаешь с кодом в обычном редакторе?
Многое теряешь без джнгп, и скорее всего, мою версию не заценишь
jasscraft есть. Так-то, я раньше особо не писал на jass, недавно вот решил что гуи сковывает. Изначально я хотел на гуи написать эту систему, но вышла хрень. Неработающая как надо, что важно.
На счёт твоей версии - мб и заценю...
9

» WarCraft 3 / Оптимальна ли реализация?

map_maiker, сохрани карту перед запуском
У меня обычный редактор, если это имеет значение. Как-то не дошли пока руки поставить jngp.
9

» WarCraft 3 / Оптимальна ли реализация?

Не нужно значения передавать, у тебя триггер реагирует на дамаг по этому юниту, ты уже можешь получить нужные тебе переменные с самого триггера
Хм, логично. Как-то не подумал.
rsfghd:
Как ты вообще сохранил карту без ошибок, если у тебя пересоздание переменной идёт?
Забавно. Ну как-то так получилось. Мб вар не считает это ошибкой?
makkad:
local code c=function Trig_attacking_Actions
call TriggerAddCondition( gg_trg_attacking, Filter(c) )
Хм, а что Filter делает?

закинул счётчик хэндлов, можешь посмотреть что происходит
Вылет в главное меню...
9

» WarCraft 3 / Оптимальна ли реализация?

call TriggerAddCondition( gg_trg_attacking, Condition( function Trig_attacking_Conditions ) )
То есть, можно написать нечто в духе
call TriggerAddCondition( gg_trg_attacking, function Trig_attacking_Actions )
и оно будет работать?
Нет, не оптимально, юзаешь точки вместо координат и даже не обнуляешь их, переменные юнитов тоже не обнулил, таймеры не обнуляешь, да и локальные триггеры тоже в null можно
Хм, ясно. А хеш-таблицу по ключу не надо очищать?
А сама идея норм или есть лучше варианты? С тз алгоритма.

Функция дамажит всех без исключения если не ошибаюсь, лучше самим юнитом через цикл/группу дамажить юнитов
В данном случае так и задумывалось...
rsfghd:
Ой посмотрел на это всё, вообще желательно всё переписать, зачем сохранять что-то в хэш-таблицу если ты уже создал триггер для этого
Значения передавать...
9

» WarCraft 3 / Момент запуска снаряда

quq_CCCP:
map_maiker, а где ты такое событие видел? Это не юнит замазнулся а именно вылет снаряда когда атаку уже отменить нельзя и все модификаторы готовы.
По идее, можно отслеживать урон. Сделать модельке юнита отсутствие снаряда и отслеживать нанесение урона цели, блочить урон и наносить самостоятельно, с нужными эффектами.
9

» WarCraft 3 / Как изменять размер/окраску спецэффекта

biridius:
QuestionsGuy, Через циклы как то так. Пример для ауры на самом герое.
Уровень 1 - зеленая, 2 - желтая, 3 - красная, каждый уровень больше
При забытии абилки, эффект удаляется и элементы массива для этого героя заменяются на последний.
При повторном изучении остаётся аура стандартного цвета на земле.
9

» WarCraft 3 / Редактирование рельефа средствами jass

Занятно, если импортировать файл рельефа из другой карты (подходящей по размеру, то рельеф заменится. Интересно, можно ли это как-то использовать?...

Собственно, пример.
Загруженные файлы
9

» WarCraft 3 / Добавить/убрать способности у предмета во время игры

Можно сделать предмет со сопособностью-пустышкой, а потом применять нужную способность при касте.
А если способность пассивная, то можно добавить спеллбук с этой способностью и, если не путаю, запретить его - чтобы не видно было.
9

» WarCraft 3 / Редактирование рельефа средствами jass

выставляешь проходимость.
Как?
Vlod:
Создаешь карту с глубокой водой, потом поднимаешь рельеф
Только по этому рельефу нельзя ходить и всё такое.
9

» WarCraft 3 / Действие с задержкой

Bergi_Bear:
map_maiker:
Если где-то ошибся - напишите, ок?
Да ошибся в выборе языка, я уже всё показал как это делает на нормальном языке, тем более в рефе, без хештаблиц и прочей ерунды. И тут динамиеский триггер и таймер, вы сами себе проблемы придумали на ровном месте
А, это рефордж.
9

» WarCraft 3 / Насчёт косвенной работы книги заклинаний

Fly123:
quq_CCCP:
Fly123, ну сделай руной, и нафига писать триггер если есть абилки требующие золот и дерево?
Это какие??? Я щас точно не вспомню, какие
Сфинкс же. Во флагах морфа стоит "требуется оплата".
АПД. Только стоимость зависит от целевого юнита, а не от настроек абилки.
9

» WarCraft 3 / Блокировка приказов

Нашел как раз карту, по коду конечно нечего смотреть, ибо всё говно, но хотя бы представление можно получить как через морф выглядит
Вот статья, там как раз описано как это работает: xgm.guru/p/wc3/powerups