26

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

юнит, реалка, число, таймер
записываешь юнита, в реалку 0.5 от текущего хп юнита
уменьшает хп юнита на реалку, число 10, запускаешь таймер
по таймеру уменьшаешь число на 1, если дошло до нуля - паузишь таймер
увеличиваешь хп юнита на 0.1 от реалки
готово
26

» WarCraft 3 / Вопрос по триггерам Warcraft 3

Принятый ответ
Такие себе варианты будут... но самое простое, и что бы реально отразить именно то что ты описал - паузить магазины когда герой выходит из области, и снимать с них паузу когда герой входит в область (при этом сами магазины будут иметь увеличенный, если не глобальный, радиусе взаимодействия). Такая схема подойдём для одного игрока/героя, а вот для мультиплеера придётся ещё что-то придумать...
26

» WarCraft 3 / Утечки с модификатором видимости

Мб не стоит так часто создавать модификаторы видимости?
Я честно говоря не помню что вообще с ними можно делать... мб их разумнее двигать? их вообще можно двигать? если нет, тогда наверно лучше обойтись дамми-юнитом, с нужным обзором, и двигать его (максимум) каждые 0.05 сек, а в идеале - около 0.1 или даже реже (смотря какого результата ты хочешь добиться).
26

» WarCraft 3 / Как триггерно отследить в ГУИ, найм какого юнита я отменил?

PT153:
зачем что-то запоминать, если для этого всего есть нужные реакции на события?
Ну значит это с постройкой такой косяк. А на трайн есть функция.
26

» WarCraft 3 / Как триггерно отследить в ГУИ, найм какого юнита я отменил?

Frostfall, в момент начала обучения юнита записывай пару кто+кого.
Кто - будет тот юнит, который начинает обучение (unit).
Кого - будет равкод юнита, обучение которого начинают (integer).
В момент завершения и отмены обучения ты можешь по обучающему получить значение его пары, т.е. равкод юнита которого он обучил/отменил.
26

» WarCraft 3 / Вопросов много...

quq_CCCP:
ой ненадо тралалал...
Дальше даже читать смысла не вижу... Чего ты взорвался то?
26

» WarCraft 3 / Вопросов много...

quq_CCCP:
если вы жасс не осилили даже не заикайтесь про ланд и прочие визуалки
Но есть же огромное число людей, которые пилят шикарные ланды, но при этом ничего не понимают в триггерах... Мб не стоит навязывать своё субъективное мнение всем подряд?
26

» WarCraft 3 / Проглотить (devour)

Принятый ответ
rsfghd:
Как узнать, кушает ли юнит кого-нибудь в данный момент или нет?
По наличию баффа Bdvv у него.
Если есть бафф = он переваривает кого-то.

rsfghd:
а как я найду того самого кодоя, что его съел?
Записывай пары юнитов в момент каста.
26

» WarCraft 3 / Button Manager v1.8.2

Lesnoi troll:
А как вывести иконки из варкрафта?
MPQ архиватором можно выдерать стандартные иконки из игры
26

» WarCraft 3 / Описание юнитов - Ссылки на хп/способности и другие свойства

Принятый ответ
Там на самом деле на много больше функций и правил их вывода, но никто нигде об этом не пишет.
С атакой всё понятно, получилось вывести через
<hfoo,mindmg1>-<hfoo,maxdmg1>
Со здоровьем - попробуй угадай, что вместо HP надо написать realHP
C защитой вроде тоже прокатывает def
Как вывести скорость атаки и движения - ХЗ
Скорее всего придётся тебе вручную всё писать.
Ну или ждать пока близы выложат линки на все нужные макросы.
26

» WarCraft 3 / Заголовок

Принятый ответ
Ну вообще - там юзается "удар грома" без урона, но с эффектом замедления.
Каст идёт с дамми-юнита.
В какой момент это делается? - когда ХП героя достигает отметки в 0 ед., но при этом событие "юнит умер" не отрабатывается. Значит герой упал, но не умер, и будет перерождён.
Но тут один момент - в таком виде это не будет корректно работать при срабатывании другого перерождения. Так что тут надо добавить либо какой-то костыль, либо просто сделать триггерный аналог скилла (отлавливать смертельный урон, паузить, неуязить, проигрывать анимацию смерти, ждать, поднимать юнита).
26

» WarCraft 3 / Дистанция получения цели

Принятый ответ
Lord_Teo:
Я точно знаю, что на 1.26 "Дистанция получения приказа" влияет на радиус агра, но никак не на дальность выстрела.
Дистанция агра урезает дистацию атаки.
Что по сути должно является решением проблемы динамического изменения ренжа атаки.
Но функция на изменение дистанции агра никогда не работала.
Вот и всё.
26

» WarCraft 3 / Способность завод не работает

Принятый ответ
Абилка специфичная, и работает сама по себе.
Может работать на умершем юните (т.е. труп будет спавнить юнитов).
Требование улучшения не блокирует работу абилки.
Если абилку заблокировать для игрока - она всё равно будет работать.
Самый доступный вариант, это вручную выдавать эту абилку в нужный момент конкретным юнитам, тогда не будет такого что она работает до момента её разблокировки улучшенем.
Если таких юнитов много в игре (типа как берсерков в ладдере), то как вариант - дать юнитам пустышку, и свичнуть её на завод после соответсвующего улучшения (через технику, улучшение уровня абилки такое же как у оживления мёртвых у некромантов, когда один скелет заменяется магом).
26

» WarCraft 3 / Пассивка. Таймеры.

Принятый ответ
EviLInside, ну я бы вообще мог сделать отдельный счёт периодичности для каждого юнита, и выдавать дополнительное ХП в зависимости от того, когда это необходимо.
При каждом срабатывании таймера проверить что время периодика меньше такта таймера.
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
Т.е. тут глобальная группа заменится на массив из связки юнит/время.
26

» WarCraft 3 / Пассивка. Таймеры.

Тут на много проще будет изменить саму формулу подсчёт регена в зависимости от потеряного % здоровья.
для наглядности
При 100% ХП это 50% от Силы раз в 5 сек = 10% от Силы в секунду.
При 90% ХП это 50% от Силы раз в 4,5 сек = 11,(1)% от Силы в секунду.
При 80% ХП это 50% от Силы раз в 4 сек = 12,5% от Силы в секунду.
При 70% ХП это 50% от Силы раз в 3,5 сек = 14,23% от Силы в секунду.
При 60% ХП это 50% от Силы раз в 3 сек = 16,(6)% от Силы в секунду.
При 50% ХП это 50% от Силы раз в 2,5 сек = 20% от Силы в секунду.
При 40% ХП это 50% от Силы раз в 2 сек = 25% от Силы в секунду.
При 30% ХП это 50% от Силы раз в 1,5 сек = 33,(3)% от Силы в секунду.
При 20% ХП это 50% от Силы раз в 1 сек = 50% от Силы в секунду.
При 10% ХП это 50% от Силы раз в 0,5 сек = 100% от Силы в секунду.
И всё это выливается просто в формулу
STR*0.5 / ( cH/mH * mT )
где cH = current HP / текущее здоровье
mH = maxHP / максимально здоровье
mT = maxTIME / максимальное время (5 секунд)
STR * 0.5 = Мощность регена от Силы героя
Тогда всех юнитов с пассивно можно закинуть в глобальную группу и запустить один таймер, который будет с этой группой работать. Вот и всё.
+ стопить таймер, если вдруг все юниты из группы будут дропнуты
+ запускать таймер, если друг в пустую группу будут добавляться ещё юниты
26

» WarCraft 3 / Разница запуска таймера

Разница лишь в том, что во втором случае конструкция может предполагать динамическое переопрелеление периода.