Ппц, была твёрдая уверенность, что если уровень применяемой способности у юнита >=1 = да, то способность однозначно не предметная (логикой допускалось, что типа способность предмета в имеющихся у юнита не считается и ее лвл должен бы быть 0 или вообще отсутствовать).
Оказалось, нет, ни фига это не работает. Ошибка была в том, что чекалось на предмете, который переключается (типа базилки в доте), а после переключения он подменялся и логично, что абилы уже не было. После проверки на других предметных абилах фейл был выявлен.
Собственно, вопрос: как проверить, является применяемая юнитом способность предметной или нет? Т. е. она у него фактически есть (в геройских ли или обычных - не важно) или это абила одного из его предметов?
Пока на скорую руку был слеплен костыль: в начале задается локальная переменная 0, циклом выбрасываются поочередно предметы и после выброса каждого проверяется, есть ли применяемая способность. Если хоть раз "нет" - локалка меняется с 0 на 1. Ну а после завершения цикла смотрим значение локалки и дальше от этого и пляшем.
Он действует, но нет ли проще решения?

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

получение текущего приказа не требует от тебя нихера, тебе нужно, чтобы там не было "useitem", и всё

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
16
7 лет назад
2
У абилок с предметов есть как минимум флаг в офсете 0x20 - 0x2000
Проверяй на него. Не знаю, может ли он появиться в других ситуациях. Вот и узнаешь :)
А еще GetUnitCurrentOrder, точно.
0
21
7 лет назад
0
DracoL1ch, спасибо, по первому понятно, ордер хз, поможет ли, я ведь не ордер ловлю, а событие каста.
PS Если кому интересно - мой способ уже баг выявил: сами посмотрите, чо будет, если во время применения стандартного чаннелинг свитка портала дропнуть его и вернуть применившему... будет очень интересно =) ну на него я фильтр поставлю, а других предметов с чаннелинг абилками у меня вроде нет, не планируется и создаваться не может
Свиток портала вообще стоит реворкать, да, но это др. вопрос
0
28
7 лет назад
0
ClotPh, что за костыли ты лепишь?
это ведь простейшая бд
если лень пилить бд то рассортируй их по равкодам
например у предметных абилок равкод больше или равен 'IA00' а у не предметных меньше
хотя как по мне то бд проще
кроме того тебе не нужно добавлять все абилки в бд
а только предметные (или не предметные, смотря каких меньше)
2
23
7 лет назад
2
для предмета есть 2 события при нажатие предмета или при исполз. способности, так что можеш проверять при нажатие способность заносиш массив равкод способность после чего при нажатие предмета сверять у способность предмет сравниваем у последный поток массива и узнаем что это предмет
Если не подводит идет порядок:
1 поток способность
2 поток предмет
0
21
7 лет назад
0
nvc123, бд простой выход по сути, но удобство сомнительно, ведь каждый новый объект придется добавлять в бд, хз... а так-то понятно, что из бд можно вообще любую систему сделать и хоть 100500 новых параметров и их проверок
я вот лучше уже в свой костыль свиток тп добавлю и все ок будет, и не придется каждый новый предмет в бд добавлять
pro100master, а пример кода можно? ща не доходит, хотя уже понимаю, что вроде должно действовать
2
23
7 лет назад
2
ClotPh, заноси temp id способность а потом лови события нажатия предмета и определиш что было нажат способность от предмета
0
28
7 лет назад
0
ClotPh, добавление в бд это от 1 до 5 секунд (в зависимости от того как быстро печатаешь)
хз почему многие их так боятся
ты на свой костыль потратил больше времени чем на заполнение бд
0
23
7 лет назад
0
nvc123, у меня бд почти 2к предметы и проблем нет даже через runtextmacro для ро предметов быстро создает
0
21
7 лет назад
0
Зачем тогда все параметры РО, проще все через бд определять и считать =)
1
28
7 лет назад
Отредактирован nvc123
1
ClotPh, а ничего что РО это тоже бд?
только данные из РО использует движок вара
и у нас нету к ним прямого доступа (только если мемхак)
а пользовательские бд используются пользовательскими скриптами т.е. jass
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.