XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,932
Активность:
Триггерный скил - Уменьшение урона
Вот сделал скил на уменьшение любого урона полученного юнитом на 99%.
Всё норм работает, но есть 2 большие проблемы, которые я никак не пойму как исправить:
  1. если у юнита 100% хп, то при получении урона, урон не уменьшается на 99% а получается как обычный 100%-й урон
  2. если юнит получает урон больший своего текущего хп (допустим хп юнита 100, урон - 200), то юнит попросту умирает
Помогите, как доделать скиллл!!!!????
Скрины триггеров внизу:
Миниатюры
Кликните на картинку для увеличения
Название:  DamageLowTriggers065.jpg
Просмотров: 34
Размер:  41.6 Кбайт  Кликните на картинку для увеличения
Название:  DamageLowTriggers066.jpg
Просмотров: 23
Размер:  37.1 Кбайт  Кликните на картинку для увеличения
Название:  DamageLowTriggers067.jpg
Просмотров: 22
Размер:  55.5 Кбайт  
Старый 16.06.2012, 13:32
Extremator

offline
Опыт: 39,590
Активность:
вообще в момент получения урона сначало мы даём юннту ХП... а потом болько он получает урон...
если у юнита 500хп а наносимый урон 100ед.
то мы ему сначало дадим 100% от урона... +100хп... но у него всё равно будет 500хп, ибо максимум...
а потом он получит урон... и у него станет 400хп...
поэтому в случиях когда "здоровье юнита + даруемое ХП" больше чем "макс.здоровье юнита"
то нужно подождать 0.01 сек и потом только дать ему "+100хп"...
иначе... как обычно... просто дать... потом урон пройдёт...
использовать Wait не рекомендую категорически! потому что там минимум 0.1 сек срабатывает
уж лучше таймер...

Отредактировано Extremator, 16.06.2012 в 13:58.
Старый 16.06.2012, 13:46
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,932
Активность:
Таймер помог исправить первую проблему, но как же быть со второй???
Старый 16.06.2012, 14:09
Extremator

offline
Опыт: 39,590
Активность:
вот пример...
но вот только тут стоит wait
так то всё работает нормально, но вот поднимает хо он не мгновенно как нужно, а только через 0.1 сек
поэтому лучше таймером... 0.005 - 0.010 сек
*** в событии юзаю конкретного юнита, но роли не играет
*** хилю на "урон", у тебя же будет (урон * 0.99)
Extremator добавил:
так... со второй помогает следующий вариант... щас отпишу......
Миниатюры
Кликните на картинку для увеличения
Название:  DamageEvent.PNG
Просмотров: 34
Размер:  20.2 Кбайт  
Старый 16.06.2012, 14:10
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,932
Активность:
Кстати если с таймером делать, то я так понимаю это надо в одном триггере всё?
Я создал глобалку таймера и в другом триггере сделал, когда таймер срабатывает и т.д. и т.п. Вроде всё работает норм, но если юнита атакует большое количество других юнитов или там юзаются спелы вроде огненного столба, то некоторый урон пропускается!
Ghostbuster добавил:
Extremator, вот ещё как же все же сделать так, чтобы юнита не убивало когда запас его хп - 100, а он получает 500 урона при блоке в 99 или 100% ???
Старый 16.06.2012, 14:20
Extremator

offline
Опыт: 39,590
Активность:
вот ответ на 2й вопрос...
запоминаем здоровье юнита
даём юниту +миллон здоровья (абилкой)
устанавливаем здоровье юнита как (запомненное число + урон)
ждём тистечение таймер... (у меня вайт 0.1 сек)
запоминаем хп юнита
отнимаем "бонус хп"
устанавливаем хп как "запомненое число"
опять же... это лишь грубый набросок
Extremator добавил:
Ghostbuster:
Кстати если с таймером делать, то я так понимаю это надо в одном триггере всё?
да... локальный переменные... таймер, юнит, значение хп...
вообще лучше делать весь триггер на jass... в нём же и будет реакция истечения этого таймера...
Миниатюры
Кликните на картинку для увеличения
Название:  DamageEvent2.PNG
Просмотров: 11
Размер:  37.0 Кбайт  
Старый 16.06.2012, 14:41
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,932
Активность:
а почему DamageTaken() + 1.34??
Ghostbuster добавил:
А можешь карту с триггером кинуть, а то вот эти триггеры самому делать влом :)
Старый 16.06.2012, 14:42
Extremator

offline
Опыт: 39,590
Активность:
Ghostbuster:
а почему DamageTaken() + 1.34??
ну просто есть у юнита меньше чем 0.405 хп... то он умирает автоматом... вроде...
ну а тут я обезопалис себя и делаю поблажку на ещё один хп... примерно... ну вот такое 1.333333... округлил до 1.34 в большую сторону!
Ghostbuster:
А можешь карту с триггером кинуть, а то вот эти триггеры самому делать влом :)
щас скину...
Extremator добавил:
вот
Прикрепленные файлы
Тип файла: w3x TestDmg.w3x (10.7 Кбайт, 8 просмотров )
Старый 16.06.2012, 14:49
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,932
Активность:
Спасибо :)
Готовься отвечать в следующей теме :)
Старый 16.06.2012, 14:54
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 22:45.