Ппц, была твёрдая уверенность, что если уровень применяемой способности у юнита >=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 секунд (в зависимости от того как быстро печатаешь)
хз почему многие их так боятся
ты на свой костыль потратил больше времени чем на заполнение бд
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.