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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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
0
32
7 лет назад
0
ClotPh, эмм были же авто генераторы бд, так что это не проблема. Юзай бд как все люди, это будет и быстрее и стабильнее.
2
16
7 лет назад
2
получение текущего приказа не требует от тебя нихера, тебе нужно, чтобы там не было "useitem", и всё
Принятый ответ
0
21
7 лет назад
Отредактирован ClotPh
0
Всем спасибо, достаточно
852008
UPD: не, ни фига
id в цифрах приказа при применении предмета 852008, в буквах, похоже, не существует
но совершенно непонятно, почему, но проверка на текущий приказ при применении любого предмета иногда то выдает 852008, то, видимо, что-то другое, т. к. проверка проходит неправильно и способность считается непредметной
снова выводить отладку в строку и узнавать, че там почему не так, дико уже бесит
крч бесполезная пока эта проверка
ладно, верну, как было, ибо ппц уже достало
2
27
7 лет назад
2
Потому что там приказ от слота итема в инвентаре зависит
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.