Всем привет,
вопрос: есть ли функция в Jass, которая возвращала бы true, если способность можно использовать, и false, если способность нельзя использовать. Если да, то можно ли разграничить эту невозможность использования, т.е. отслеживать причину невозможности каста (не хватает маны, способность в кулдауне, сам кастер в стане, нет в наличии способности и т.д.)
Если нет, какие мысли по поводу создания такой функции?

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

А вот с кд я не знаю.
Привязываешь к определённому типу способности срок её кд. Когда способность применяется, это значит, что способность ушла в кд и устанавливаешь таймер на время её кд. Когда таймер истёк, это значит, что с этого момента способность больше не в кд.
Ambruziy:
не хватает маны
Привязываешь к определённому типу способности количество маны, которую она требует для применения. Если требуемое количество маны больше или равно текущему количеству маны самого кастера, значит маны для применения достаточно.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
25
9 лет назад
0
А теперь вопрос: зачем? Для чего это нужно? Но функцию написать можно. Делается по отлову приказа применения способности.
1
7
9 лет назад
Отредактирован Ambruziy
1
Использовать хочу вот в чем: при логике принятия решений ИИ будет выбирать действием с наибольшим весом. Применение тех или иных способностей будет наравне с действием атаки или к примеру хила. Но ИИ должен отслеживать, может ли он кастовать хил, если нет - соответствующий вес будет множиться на ноль для этого момента времени.
Итог, нужно отлавливать эту возможность.
0
28
9 лет назад
0
Ambruziy, приказываем кастануть скил и смотрим на результат
если кастанул то молодец если нет то обнуляем вес
0
7
9 лет назад
0
nvc123, вот тут и основная проблема: во-первых, нельзя менять текущий приказ (но с этим можно справиться в общих чертах), во-вторых, если юнит каст применил, то уже поздно отслеживать возможность, т.е. нужно вычислять именно потенциал, сможет или не сможет допустим через секунду кастануть. И опять же, таким способом не находим причины невозможности каста. С маной вроде бы можно разобраться, где-то на форуме была функция, которая цепляла стоимость каста. А вот с кд я не знаю.
0
17
9 лет назад
Отредактирован naxim
0
А вот с кд я не знаю.
Привязываешь к определённому типу способности срок её кд. Когда способность применяется, это значит, что способность ушла в кд и устанавливаешь таймер на время её кд. Когда таймер истёк, это значит, что с этого момента способность больше не в кд.
Ambruziy:
не хватает маны
Привязываешь к определённому типу способности количество маны, которую она требует для применения. Если требуемое количество маны больше или равно текущему количеству маны самого кастера, значит маны для применения достаточно.
Принятый ответ
0
7
9 лет назад
0
naxim, в общем "база данных в помощь") Да, видимо только так и можно.
0
28
9 лет назад
0
Ambruziy, что за бред ты несёшь
считаем что юнит может применить способность
если ии решил что юнит должен её применить то применяем
если скил не кастанулся то запускаем другую ветку
2
7
9 лет назад
2
nvc123, мне нужно узнать возможность каста способности не только в данный момент времени, но например через N секунд, т.е. через БД это можно узнать, как сказал naxim. Нужно, чтобы ИИ прогнозировал наперед свои возможности. Например в цепочке решений у него могут быть несколько действий, а ля "каст огненный шар" - "бежать к цели" - "удар с ноги", если он заведомо не сможет кастануть "удар с ноги" через определенное время (пока кастует огненный шар + пока бежит к цели), то ему имеет смысл пересмотреть свою логику, и выбрать, к примеру, "каст огненный шар" - "отступать" - "хил". И т.д. Поэтому и нужны источники невозможности каста (если маны мало - путь развития с восстановлением маны, если в параличе - снять паралич и т.д.) Надеюсь теперь описал понятно для чего. Суть не в этом, для чего использовать, это дело второе, сначала надо понять как это получить.
0
25
9 лет назад
0
Всякие параличи/сайленсы/станы - проверка на уровень бафа (способности).
Остальное сказали выше.
0
7
9 лет назад
0
Ancient, в общем, да, ответ на вопрос есть. Можно тему закрывать. Если кто-то найдет еще альтернативные способы БД, прошу писать в личку)
0
28
9 лет назад
0
Ambruziy, ну так закрой ты же афтар
Чтобы оставить комментарий, пожалуйста, войдите на сайт.