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

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

Ответ
 
Murloc
Powered by Q
offline
Опыт: 16,977
Активность:
Спелл из доты.....
У меня такой вопрос : как сделать чтоб с растоянием полёта снаряда увеличивался наносимый урон (как у дриады).Если ЭТО сделано на джассе то просто об этом скажите (на нём я работать не умею).И можно ли сделать ЭТО на тригерах???
Старый 09.01.2006, 14:39
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
угу классный спелл мне тоже нравиццо

это был тонкий намек что на этот спелл надо любоватся, а не нагло тырить :)

На тригах наверно тоже мона... считаешь расстояние между атакером и жертвой, вычисляешь прибавку к урону по страшной полиномной формуле, которую можешь с спросить у NT :), ждешь время=растояние/скорость_снаряда, и вешаешь дамаг на жертву...
Старый 09.01.2006, 15:45
Murloc
Powered by Q
offline
Опыт: 16,977
Активность:
впрочем ну этот спелл на ... (куда подальше)
я ничего не понял из того что ты сказал (кроме НТ) :)

Cyberface добавил:
если можно то попадробнее
(всё расписано,по шагам)
Старый 09.01.2006, 15:50
Sergey
Старейший
offline
Опыт: 44,363
Активность:
JASS. Правда Доту я давно не видел. Это делается в спеле или вообще при атаке?
Пути решения я вижу примерно 2:
  1. Отслеживать рассояние при событии Unit is Attacked. В зависимости от рассояния до цели можно давать атакеру скрытую способность-усилитель атаки. Это пожалуй можно делать и обычным триггером, но недостаток в том, что повреждения увеличиваются не от того, сколько снаряд летел, а от того, где находился враг в начале броска.
  1. При том же событии можно динамически создавать триггер, который отловит повреждения цели, когда снаряд долетит и еще таймер, который позволит узнать, сколько времени снаряд находился в полете. Затем триггерно наносим доп. повреждения. Это делается только на JASS, причем требуется некоторый уровень овладения.
Старый 09.01.2006, 15:53
Mefist
Is it cocktail hour yet?
offline
Опыт: 98,190
Активность:
А как этот спелл в доте выглядит?
Старый 09.01.2006, 15:55
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Я не помню как это будет по-тригерному :) но попытаюсь...
п.1. Сначала надо узнать скорость снаряда в ОЕ и запомнить.
п.2. Создать триггер с событием атаки.
п.3. Условие на проверку атакера (далжна быть функция Unit - get attaking unit)
п.4. Находишь расстояние между юнитами: атакером и жертвой (Unit - get attaked unit)
п.5. Вычисляешь прибавку к урону. Сам придумаешь формулу. Типа расстояние делим на константу, но это линейно и суксь, все равно атакер не будет стрелять на пол карты. Например можно квадрат расстояния делить на константу.
п.6. Ждешь (wait) расстояние/скорость_снаряда_из_п1 секунд. И молешся что жертва не перемещается (ну ее перемещениями можно пренебречь, но всежь) :)
п.7. Наносишь урон жертве в виде той прибавки, которую ты вычислил в п.5.

exploder добавил:
Цитата:
давать атакеру скрытую способность-усилитель атаки

Но ведь атакер уже совершил атаку...(тригер шелкнул уже после совершения акта атаки) есть ли смысл давать ему способность, если она не повиляет на текущую атаку? Или все таки повлияет?
Т.е. когда просчитывается движком урон: в момент попадания или в момент факта атаки?
Старый 09.01.2006, 16:15
THeBloodiest

offline
Опыт: 20,881
Активность:
В том-то и дело, что расстояние берется не в момент броска а в момент попадания в цель. Т.е по идее статичиски остается начальное положение атакующего. Положение атакуемого - переменное.
Страшной полиномной формулы там нет. Просто считается процент в зависимости от уровня абилы дриады.
Старый 09.01.2006, 16:25
Sergey
Старейший
offline
Опыт: 44,363
Активность:
2exploder, событие Unit is attacked срабатывает в момент начала атаки, но еще до того, как снаряд вылетел. Поэтому если в этот момент дать способность-усилитель, она сработает так, как нужно. По-моему этот вараиант с абилами будет самым простым. Недостоверные повреждения будут происходить только в очень редких случаях, если юнит-цель движется очень быстро или куда-то телепортируется.
Старый 09.01.2006, 16:33
TiM
Старичок
offline
Опыт: 8,594
Активность:
Это делается довольно просто: создаешь спелл, который при попадании вешает какой-либо буфф. И делаешь триггер, который запускается каждые 0.01 секунды, который проверяет:долетел ли Impetus до цели, точнее появился ли у цели этот буфф. Как только появился, высчитывается урон: 7,14,21,28% помноженный на расстояние ОТ АТТАКУЮЩЕГО В ДАННЫЙ МОМЕНТ до ЦЕЛИ В ДАННЫЙ МОМЕНТ, или же, скорее всего, *расстояние ОТ АТТАКУЮЩЕГО В МОМЕНТ БРОСКА до ЦЕЛИ В ДАННЫЙ МОМЕНТ.
Старый 09.01.2006, 16:37
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Sergey
А - понятно... дык че геморится с абилой если можно подсчитать урон напрямую. А в момент нанесеня урона проверять расстояние повторно, если сильно изменилось, то чо нить делать...
Старый 09.01.2006, 17:22
Murloc
Powered by Q
offline
Опыт: 16,977
Активность:
а как совершать проверку и ваще как всё это реализовать?

Cyberface добавил:
само копьё представляет собой усилитель урона,чтото наподобе огненных стрел
Старый 09.01.2006, 18:00
Markiz

offline
Опыт: 11,432
Активность:
В доте сделано так:
на стрелках этих висит некоторый бафф, то есть при долете снаряда до цели у цели этот бафф проявляется.
Поэтому при касте и просто атаке дриады они ждут пока появится бафф и затем дамажат.
Старый 09.01.2006, 19:21
Murloc
Powered by Q
offline
Опыт: 16,977
Активность:
да но баф то всегда разный!

Cyberface добавил:
и появляется баф после попадания в цели копья

Cyberface добавил:
тааак.....ладненько.
А как зделать мины которые подрываютсь тем кто их установил(хотябы одна)
и вообще как сделать чтоб мины мона было ложить через спелл?

З.Ы. вопросов очень много т.к. я новичок
Старый 09.01.2006, 19:40
NETRAT

offline
Опыт: 83,712
Активность:
Там однозначно бафф задействован.

Cyberface что значит разный? бафф нам нужен только чтобы отследить момент попадания, на остальное он не влияет, так что бафф везде один.

Такого типа спелл не поддерживает мультиинстанс - то есть если будет две Дриады(впрочем, в Доте их быть 2 не может), то спелл будет глючить в некоторых местах
Старый 09.01.2006, 21:00
Murloc
Powered by Q
offline
Опыт: 16,977
Активность:
Добрый дядя Нетрат всё нам расшифровал,а теперь такой вопрос :
Как это выглядит тригерно???
Куда лепить бафф?
если модно то создайте мапу с примером героя
Дядя НТ тока не посылай читать статью :)))
Старый 09.01.2006, 22:35
NETRAT

offline
Опыт: 83,712
Активность:
Карту нету времени делать, суть для одной Дриады примерно такова:
Если в жассе совсем не бум-бум, то локалки замени глобалками и используй аналогичные триггерные функции. Impetus - это твой спелл, ImpetusBUFF - его бафф.
Код:
Event - Unit Finishes casting ability
Condition - (Ability being cast) equal to (Impetus)
Actions
local unit uTarget=(Target of Ability)
local integer iLevel=GetUnitAbilityLevel((GetTriggerUnit), Impetus)
local location pSource=GetUnitLoc((GetTriggerUnit))
wait for condition (Unit (uTarget) has specific buff (ImpetusBUFF)) checking every 0.1(это время не должно превышать время существования баффа на юните) seconds

далее в триггере считаем расстояние между точкой pSource и текущим положением юнита uTarget Math - Get Distance Between Points и вешаем ему соответствующий дамаг с учетом уровня абилы iLevel. Эффект всплывающего текста дамага - вероятно, это двигающися TextTag
Старый 10.01.2006, 12:16
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
а лучше не через баф, а, как предлагал сергей, по событию Unit is attacked создавать триггер, который отлавливает событие Unit is damaged с damage source'ом - кастующим юнитом. Тогда считать и дилить дамаг. Но для этого абила сама по себе должна дилить хоть 1 дамаг.
Старый 11.01.2006, 01:31
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
2 трига(см. рисунки) и 6 переменных: 2(боевая еденица), 2(реальная), 1 целочисленная, 1 сторока.
Миниатюры
Кликните на картинку для увеличения
Название:  1.JPG
Просмотров: 28
Размер:  32.9 Кбайт  Кликните на картинку для увеличения
Название:  2.JPG
Просмотров: 23
Размер:  14.7 Кбайт  
Старый 22.01.2006, 14:54
Iron
Листовой
offline
Опыт: 24,427
Активность:
MapMan С твоим триггером, демаг будет наносится еще до долетания копья, если атакуемый будет убегать, или после, если будет двигаться на вас.
А в доте принцип другой, там демаг считается не так как у тебя (у тебя он считается const*(расстояние от атакующего в момент выстрела до атакуемого в момент выстрела), в доте считается так const*(расстояние от атакующего в момент выстрела до атакуемого в момент ПОПАДЕНИЯ СНАРЯДА). Т.е. если атакуемый будет убегать,то его шибанет гораздо сильнее, чем если он будет бежать к атакующему.
Старый 23.01.2006, 16:49
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
если атакуемый будет убегать,то его шибанет гораздо сильнее, чем если он будет бежать к атакующему.
Это верно - поэтому дриада-страшный герой, ибо стандартная реакция покоцанного героя - поскорее убежать подальше, а если ты в этот момент кидаешь импетус, то враг получает раза в 2 дамака чем мог бы получить, среагируй он более грамотно... Хотя это достаточно сложно
Старый 23.01.2006, 17:41
Ответ

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

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

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

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



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