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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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 – во втором и т.д.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.