Неограниченный рендж каста
Доброго времени суток. Очередная упоротая идея: герой с ультой, временно убирающей лимит на дальность каста заклинаний "цель-объект" себе и всем союзникам.
Т. е. все скиллы типа цепки зевса, ульты вайпера в доте и т. д. приобретают неограниченный каст рендж на несколько секунд (только у союзных героев). Что дефолтные, что триггерные.
Какие идеи для реализации, с мемхаком или без?
Пока что без мемхака такая идея - отлавливать все приказы целевых заклинаний, быстро сдвигать героя по X/Y вплотную к цели приказа и возвращать на место (чтобы он успел начать замахиваться, что ли...), но не пробовалось, хватит ли недоступного глазу (или не сильно портящего восприятие) момента, чтобы перемещение не резало глаз, насколько это при всех/большинстве заклинаний будет естественно смотреться и фактически действовать + всякие аналоги ультов бладсикера (в личном варианте она не имеет ограничения при проверке на расстояние) и отловы перемещений в принципе, если его потребуется "подержать для замаха" на месте хотя бы 0.01 секунды - уже бяка. И все равно это правой рукой левое ухо чесать через голову.
В идеале, конечно, через мемхак бы менять. Пока там не вижу функции смена cast range абилы, не намекнете, куда копать? А то и шмотку типа дотовских линз интерес пилить имеется...
PS БД и "Техники" на сотни заклинаний - однозначно не вариант.

Принятый ответ

ClotPh, делаем все спелы без ограничения ренджа
когда кастуем спелл проверяем расстояние до цели и кастуем спелл либо если слишком далеко то приказываем двигаться к цели каста
потом проверяем таймером расстояние до цели и отдаём приказ каст если расстояние подходит
если отдан любой приказ за исключением "движение в точку" то прекращаем проверку
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
27
7 лет назад
Отредактирован MpW
0
смотри тут
вот что-то не могу найти range of cast нигде, через параметры абилки это никак?
0
21
7 лет назад
0
Да так вот в том и прикол, что по Range вижу там только рендж атаки. Кстати, по-моему, эта функция у меня почему-то пока не работает (в РО дальность получения приказа выворачивалась на максимум - все равно рендж атаки не рос), но это уже оффтоп, мне сейчас безлимитный рендж каста интересен, а не рендж атаки.
В РО-то можно поставить безлимитный рендж абилки запросто. Но по умолчанию-то они должны быть с ограниченным ренджем!
Насколько я понимаю идею мемхака, раз в РО у абилки есть поле - должно быть и отвечающее за него значение памяти. Его и спрашиваю.
0
27
7 лет назад
Отредактирован MpW
0
Попробуй триггерно сделать. Если дальность каста будет превышать, то выдай ошибку, выдай текст со звуком (у Diod-а где была в библиотеке, вбей слово sim error). xgm.guru/p/wc3/58159 А так в нужный момент, когда нужно снять ограничение - используем задуманное, двигаем.
В этом не очень шарю, я с памятью работать только начинаю. У меня работают только те функции, которые есть.
0
21
7 лет назад
0
^ Не очень удобно, но некий смысл есть, ладно, в возможные варианты в крайнем случае
А что насчет варианта быстро двигать кастера туда-обратно по координатам после отлова приказа абилки?
0
18
7 лет назад
0
А может, даммика создавать? При отлове приказа самого кастера остановить, создать дамми в нужных координатах, дать ему способность (установив уровень) и приказать применить эту способность.
0
27
7 лет назад
0
Просто не понимаю,что ты хочешь сделать. Плохо понимаю. Зачем героев туда-сюда двигать?
0
21
7 лет назад
0
С даммиком там свои замороки будут, хочется, чтобы источником урона был герой, а не даммик, хочется, чтобы цепка от исходной точки через всю карту красиво шла.
А с движением у меня задумка такая:
Вот, допустим, зевс должен скастовать chain lightning на неогр. дистанцию.
  • Отлавливается, что герою отдается приказ chainlightning или как там его (ну уж для приказов целевых заклинаний БД запилить можно)
  • Зевс сразу же через координаты X/Y перемещается в позицию врага (чтобы, значит, дальности ему хватило, а приказ-то он получил и сразу кастить на врага типа пошел).
  • Вот тут главный вопрос - не тестировалось: сколько ему надо будет времени, чтобы замахнуться для каста и можно ли его сразу же или хотя бы через 0.01-0.05 секунды (не больше) переместить обратно в старые координаты X/Y. Чтобы скрыть и сгладить факт перемещения, на момент перемещения его можно сделать неуязвимым (чтобы всякие ульты бладсикера без подстраховочной части в коде не разрывали пополам) и модель прозрачной, а в исходной позиции создать типа эффекта какого-нибудь сияющего на те 0.01-0.05 секунды, откуда он там пропадет.
  • По истечению этого времени (в идеале 0 сек., приемлемо хотя бы не больше 0.2 сек.) переместить обратно по координатам X/Y.
Как я понимаю, это ДОЛЖНО работать, но в данном варианте вопрос в 2 вещах:
  • Насколько ему долго нужно ждать будет, чтобы замахнуться заклинанием и потом его можно было перемещать обратно, а заклинание не прервалось.
  • Насколько это в итоге все будет естественно смотреться для всех заклинаний, можно ли его так телепортнуть, чтобы реально он "моргнул" лишь на долю секунды и чтобы молния прорисовалась на всю дистанцию - т. е. он переместился, юзнул, обратно телепортировался, но для игрока это все почти не заметно, а эффект молнии успел продержаться от его руки и видимым что типа через всю дистанцию пролетел.
Ну и все-таки это изврат, хотя приемлемый.
2
16
7 лет назад
2
все время от spell_channel до spell_effect кастер должен ьбыть в ренже
0
27
7 лет назад
Отредактирован MpW
0
раскрыть
А ты попробуй вот что сделать:
сыммитируй ошибку, если это не нужно. когда нужно это, ловим приказ.
А вообще анимация замаха начинается с атаки, но тут каст. поэтому вместо атаки будем ловить приказ каста. Вообще не тестировал, но мне кажется "юнит получил приказ" и "юнит атакован" похоже одновременно начинают. По идее когда каст накидывается на вражескую цель, у него всплывает в системе урона нолик, даже, если там не указан никакой бафф. Это своего рода effect, есть же событие "юнит приводит в действие" на англ. EVENT_PLAYER_UNIT_SPELL_EFFECT. Кстати анимацию можно ускорить попробовать ну и все.
0
21
7 лет назад
Отредактирован ClotPh
0
"все время от spell_channel до spell_effect кастер должен ьбыть в ренже"
Понятно, спасибо. Значит, чаннелы обламываются, но это тоже еще ладно.
Ну так что насчет ячейки памяти?
Вот уже таки запилена собственная реализация через движение без мемхака - СМ. КАРТУ. Там на 3 ордера, расширяется изи.
Ну приемлемо. Но... в общем, смотрите сами недостатки. И чуть не полсекунды надо на некоторые спеллы кастеров держать, а то не успевают (хотя там мб можно играться с касттаймом, но хз). Зато молнии успевают разрисоваться на всю длину, как и желалось. Чисто так на четыре с минусом пойдет, но вот прямо сейчас в таком виде пилить не очень вдохновляет...
Файл
Загруженные файлы
0
16
7 лет назад
0
даже через память сложно, ибо нужно менять в глобальной таблице и восстанавливать как можно скорее. можешь сам в коде дотки новойц глянуть, если не разберешься - то и без обфускации не справишься
0
21
7 лет назад
Отредактирован ClotPh
0
Понятно, ладно, пока из всего остановлюсь на своем варианте выше, альтернативы приняты во внимание
Если вдруг у кого будут еще идеи - спасибо
Для себя все-таки тут подытожу недостатки собственного варианта:
  • Фактически происходит движение цели с места примерно на полсекунду, хотя в это время она и неуязвима и размер модельки обнулён, но если где-то есть что-то, что все равно может стриггериться на факт ее перемещения, оно пройдет. Так что лучше как-то это отразить в описании заклинания будет...
  • Надо там допрописать условия на все ордеры целевых спеллов (но это уже фигня, один раз пропишешь и готово).
  • Заклинания с нестандартно специально большим каст таймом и, ятп, чаннелы в пролете, но пох, фича.
Зато преимущества:
  • Работает со всеми заклинаниями в принципе, втч вновь создаваемыми и триггерными, если у них целевые Id стандартные.
  • По крайней мере эффекты молнии успевают красиво прорисоваться на все расстояние.
  • Корректно идет, что кастил именно наш герой и урон и все эффекты, соответственно, тоже от него.
  • Если эффект клэпа в момент полусекундного "пропадания" героя при касте не устраивает, он легко и безутечно заменяется на любой нужный.
А так все действует.
Теперь только при активации заклинания "все спеллы союзников действуют на всю карту" баффать союзников на время нестандартным баффом и в ифзенэлсах подобного триггера ещё добавить проверку на наличие этого баффа. Ну и в идеале подобный триггер включать или вообще создавать только на время действия подобного заклинания и регистрировать в нем только нужные объекты, чтобы постоянно он не нагружал карту проверкой на каждый ордер (а в тесткарте офк простейший неоптимальный вариант, но действенный).
3
28
7 лет назад
3
ClotPh, делаем все спелы без ограничения ренджа
когда кастуем спелл проверяем расстояние до цели и кастуем спелл либо если слишком далеко то приказываем двигаться к цели каста
потом проверяем таймером расстояние до цели и отдаём приказ каст если расстояние подходит
если отдан любой приказ за исключением "движение в точку" то прекращаем проверку
Принятый ответ
0
20
7 лет назад
0
еретики, хоть бы кто про "технику" вспомнил
0
27
7 лет назад
0
ssbbssc, автор упомянул не вспоминать ее =(
0
20
7 лет назад
0
лол
моя ошибка
3
6
7 лет назад
3
с мемхаком просто:
Как создашь таблицы для скила, юзай GetAbilityDataHeroRng (если не хочешь, чтобы для всех сменился ренж у абилы)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.