Добавлен Romeno,
опубликован
Раздел:
Основы
Не видел на форуме анализа целей Warcraft-а. Для меня всегда логика этой большой таблички в РО
(WRONG IMAGE URL - imageshack)
была неинтуитивной.
Я решил разобраться и выкладываю результат, возможно кто-то найдёт что-то новое для себя.
Я решил разобраться и выкладываю результат, возможно кто-то найдёт что-то новое для себя.
За разрешённые цели/типы целей отвечают такие поля в РО, как:
Характеристики - Разрешённые цели (способности) - разреш. цели данного спела
Бой - относится к типу целей (войска) - тип цели, к которому отнсоится данный юнит
Характеристики - Классификация войск (войска) - тип цели, к которому относится данный юнит (доп.)
Бой - тип цели (разрушаемые объекты) - тип цели, к которому относится данный разрушаемый объект
Бой - АтакаN - допустимые цели (войска) - разреш. цели АтакиN юнита
Бой - АтакаN - радиус поражения (цели) (войска) - разреш. цели сплэша юнита
Бой - относится к типу целей (войска) - тип цели, к которому отнсоится данный юнит
Характеристики - Классификация войск (войска) - тип цели, к которому относится данный юнит (доп.)
Бой - тип цели (разрушаемые объекты) - тип цели, к которому относится данный разрушаемый объект
Бой - АтакаN - допустимые цели (войска) - разреш. цели АтакиN юнита
Бой - АтакаN - радиус поражения (цели) (войска) - разреш. цели сплэша юнита
И такие функции в common.j, как IsUnitType; UnitAddType; UnitRemoveType
В первую очередь все цели делятся на 3 группы: Предметы, *Разрушаемые объекты*, Юниты.
Все юниты делятся на 3 группы: Духи/Не духи; Воздушные/Наземные; Здания/Не здания. Они сочетаются по принципу "или". Т.е. если установить разрешённые цели (для заклинания или для атаки юнита, далее - Р.Ц.) Духи, Здания, Наземные, то это покроет все основные б.ед.
Все юниты делятся на 3 группы: Духи/Не духи; Воздушные/Наземные; Здания/Не здания. Они сочетаются по принципу "или". Т.е. если установить разрешённые цели (для заклинания или для атаки юнита, далее - Р.Ц.) Духи, Здания, Наземные, то это покроет все основные б.ед.
Типы целей боевых единиц
Если установить юниту "Бой - относится к типу целей" ("Бой - относится к типу целей" или "Бой - тип цели (разрушаемые объекты)" далее - Т.Ц.) Духи, Здания, Наземные, это НЕ будет означать, что он является наземным-духовным-зданием, т.е. это НЕ отдельный Т.Ц. Это будет означать, что он относится и к Духам и к Зданиям и к Наземным.
Из чего следует, что Р.Ц. только Воздушные Здания - не существует и указать её нельзя!
Воздушные Здания - это все Воздушные + все Здания. Также не существует Воздушных Духов, Духов Зданий и т.п.
Из чего следует, что Р.Ц. только Воздушные Здания - не существует и указать её нельзя!
Воздушные Здания - это все Воздушные + все Здания. Также не существует Воздушных Духов, Духов Зданий и т.п.
Ещё раз Т.Ц. - это каким типом цели явл. сам юнит/разрушаемый объект; Р.Ц. - это разрешённые цели атаки/заклинания
Также нужно сказать, что если у юнита в Т.Ц. не стоит ни Дух, ни Наземные, ни Здание - это означает, что он НЕ является целью типа "юнит". Ни один спелл, ни один юнит не смогут его атаковать его или кинуть на него спелл.
Установка галки Герой, по моим изысканиям, ни к чему не приводит. Героем являются те, что созданы в РО из основы любого героя. Эту классификацию нельзя ни убрать, ни добавить с помощью UnitAdd/RemoveType.
Также установка Т.Ц. у юнитов: Живые, Мёртвые, Сам воин, Не сам воин, Уязвимые, Неуязвимые, Союзники, Нейтральные, Друзья, Враги, Войска Игрока не даёт ничего (НЕ путать с Р.Ц.)
Друзья, Враги, Нейтральный, Союзник, Войска Игрока определяются только во время игры динамически, если юнит вражеский, значит и Т.Ц. у него Враги. В Союзников входят только союзники игрока, войска игрока не входят в союзников. На сколько я понял, Друзья = Союзники + Войска Игрока.
Друзья, Враги, Нейтральный, Союзник, Войска Игрока определяются только во время игры динамически, если юнит вражеский, значит и Т.Ц. у него Враги. В Союзников входят только союзники игрока, войска игрока не входят в союзников. На сколько я понял, Друзья = Союзники + Войска Игрока.
Для того, чтобы являться Зданием нужно: а) установленные в РО галки: "Является зданием" и Т.Ц. "Здание". Триггерный вызов call UnitAddType(u, UNIT_TYPE_STRUCTURE) НЕ даёт никакого эффекта.
Для того, чтобы являться Духом: установленный Т.Ц. Духи. Установка "Характеристики - Классификация войск" : "Страж" - не даёт ничего.
Галки в Р.Ц. Неуязвимый и Уязвимый относятся и к Предметам, и к Разрушаемым объектам, и к Юнитам.
Установка Т.Ц. "Нет" сделает невозможным указание данного юнита как цели любого заклинания или любой атаки. Насколько я понял, "Нет" равносильно тому, чтобы просто убрать все галки в Т.Ц.
Самоубийцы, Древа, Механика
Для того, чтобы являться Самоубийцей: установленный в Классификации: Самоубийца. Установка в Т.Ц. Самоубийца не даёт ничего.
С Древом и Механикой тоже самое как и с Самоубийцей.
Эти три Р.Ц. являются единственными действующими "по принципу И". Т.е. они сужают область допустимых целей. Если установить галки Древо, Самоубийца, это будет значить, что заклинание или атака действует только на тех, кто является и Древом и Самоубийцей. Это Можно отлично использовать и об этом позже.
Р.Ц. заклинаний по умолчанию и их изменение.
У большинства (у всех не проверял) заклинаний насылаемых на юнита, если не устанавливать никаких флажков, это будет равносильно
следующему:
(WRONG IMAGE URL - imageshack)
Изменение Р.Ц. происходит по группам. К примеру, если установить только галку Древа и никаких других, то это будет равносильно
следующему:
(WRONG IMAGE URL - imageshack)
Устанавливая 1 флажок в группе как бы убираются все остальные.
Группы:
- Духи
- Герои / Не Герои
- Сам воин / Не сам воин
- Наземные / Воздушные
- Живые / Мёртвые
- Неуязвимые / Уязвимые
- Здания
- Друзья / Враги / Союзники / Войска игрока / Нейтральные
- Самоубийцы / Не самоубийцы
- Древа / Не Древа
- Механизмы / Организмы
Т.Ц. разрушаемых объектов
К Т.Ц. разрушаемых объектов относятся: Мосты, Декорации, Прочее, Деревья, Стены. Они НЕ сочетаются! Т.е. декорация с Т.Ц.: Мосты, Стены - не будет ни мостом, ни стеной, ни мостостеной. В свою очередь Р.Ц. атак, заклинаний, направленных на разрушаемые объекты, сочетаются по принципу или. Р.Ц. атаки Деревья, Мосты - значит, что юнит может атаковать мосты и деревья. По умолчанию атаковать Т.Ц. "Декорации" не может никто, поэтому им никто урон и не наносит. Разрушаемые объекты с Т.Ц. "Декорации" - это Вулкан, всякие троны и т.п. Если поставить эту галку в Р.Ц. у юнита, Вулкан можно будет снести.
Если у разрушаемого объекта не устанавливать в Т.Ц. ничего, то он не будет являться "разрушаемым объектом" как целью, также как и юнит, т.е. его нельзя ни атаковать, ни кинуть на него спелл.
При определённых условиях разрушаемые объекты даже с установленным Т.Ц. не могут стать целью заклинаний. Обычно это лечится установкой галки "Графика - Можно выбрать в игре".
Если у разрушаемого объекта не устанавливать в Т.Ц. ничего, то он не будет являться "разрушаемым объектом" как целью, также как и юнит, т.е. его нельзя ни атаковать, ни кинуть на него спелл.
При определённых условиях разрушаемые объекты даже с установленным Т.Ц. не могут стать целью заклинаний. Обычно это лечится установкой галки "Графика - Можно выбрать в игре".
Собственная система целей
Важно отметить: при попытке установить разрушаемым объектам Т.Ц. юнита, например "самоубийца", никакого эффекта не будет. Также как и юнитам Т.Ц. разрушаемого объекта н.р. "прочее". То же самое с Т.Ц. "предмет". Видимо в Варе внутри стоит проверка на то, является ли данная цель разрушаемым объектом, боевой единицей или предметом на самом деле.
Тем не менее, часто требуется запретить или разрешить применение заклинания только на определённых юнитов. Обычно для этого используется самая "бесполезная" классификация: Самоубийцы (в Доте - Древа).
Тем не менее, для большой карты или проекта, одной группы войск может быть не достаточно. Как быть?
Классификация Древа, на сколько я понял, отличается только тем, что строитель здания с такой классификацией исчезает. Это легко сделать триггерно, освободив все Древа от такой классификации. Т.о. Древа становится доступна, как доп. классификация для войск. Выходит 2 типа искусственных целей.
Тем не менее, для большой карты или проекта, одной группы войск может быть не достаточно. Как быть?
Классификация Древа, на сколько я понял, отличается только тем, что строитель здания с такой классификацией исчезает. Это легко сделать триггерно, освободив все Древа от такой классификации. Т.о. Древа становится доступна, как доп. классификация для войск. Выходит 2 типа искусственных целей.
Но и этого может быть не достаточно. В этом случае можно создать 3юю, а именно чётко указывая у каждой атаки/заклинания цели для Древ - Древа, Не Самоубийцы, для Самоубийц - Самоубийцы, Не Древа. И 3ий тип целей будет: Древа, Самоубийцы. (Как вы помните они сочетаются по принципу "и")
Но и этого может быть не достаточно. Можно задействовать 3ий, сочетающийся по принципу "и", тип целей: Механика. Но тут придётся потрудится и у всех дефолтовых способностей, юнитов и т.п. убрать чистые Р.Ц. Механика и заменить их на Механика, Не Древа, Не Самоубийцы. Т.о. становятся доступны следующие искусственные типы целей/разрешённые цели:
Но и этого может быть не достаточно. Можно задействовать 3ий, сочетающийся по принципу "и", тип целей: Механика. Но тут придётся потрудится и у всех дефолтовых способностей, юнитов и т.п. убрать чистые Р.Ц. Механика и заменить их на Механика, Не Древа, Не Самоубийцы. Т.о. становятся доступны следующие искусственные типы целей/разрешённые цели:
Самоубийца? | Древо? | Механика? |
---|---|---|
+ | + | + |
+ | + | - |
+ | - | + |
+ | - | - |
- | + | + |
- | + | - |
- | - | + |
- | - | - |
Т.о. число доступных типов выходит: 2 в степени 3 = 8; один из которых: Не Древа, Не Самоубийцы, Организмы - тип по умолчанию боевых единиц.
При этом оговорка, ещё раз, все цели должны быть прописаны чётко, если где-то встретится НЕ чёткий тип: Древа, Механика, то под него подпадут 2 искусственных типа: Древа, Механика, Не самоубийцы и Древа, Механика, Самоубийцы (хотя возможно будут случаи когда и такое полезно). Цели должны быть чётко прописаны везде.
При этом оговорка, ещё раз, все цели должны быть прописаны чётко, если где-то встретится НЕ чёткий тип: Древа, Механика, то под него подпадут 2 искусственных типа: Древа, Механика, Не самоубийцы и Древа, Механика, Самоубийцы (хотя возможно будут случаи когда и такое полезно). Цели должны быть чётко прописаны везде.
Также большим плюсом Самоубийц, Древ, Механики является то, что эти классификации можно добавить триггерно.
Звуки и сообщения об ошибках при неверном выборе цели
При неверном выборе цели может быть проигран звук и выдано сообщение об ошибке с подсказкой: какова верная цель. На это я сильное внимание не обращал, могу только сказать точно, что для юнитов, не являющихся целью типа "юнит", т.е. у тех, у которых отсутствуют данные в поле Т.Ц. (см. пункт "Типы целей боевых единиц" данной статьи) НЕ будет выдано никакого сообщения об ошибке и НЕ будет проигран никакой звук, как будто бы вы вообще не нажали мышью.
В общем и целом сообщения об ошибочном выборе цели неадекватны. Особенно при сочетании таких Р.Ц. как Древо, Самоубийца, Механика. Тем не менее это можно условно вылечить в Игровом интерфейсе, указав наиболее абстрактные сообщения для некоторых сообщений.
В общем и целом сообщения об ошибочном выборе цели неадекватны. Особенно при сочетании таких Р.Ц. как Древо, Самоубийца, Механика. Тем не менее это можно условно вылечить в Игровом интерфейсе, указав наиболее абстрактные сообщения для некоторых сообщений.
Заключение
Спасибо, если прочли столько много букоф. Буду благодарен за любые уточнения, исправления.
Тестировано на способности "Молот бурь" и некоторых других.
На что влияет галка Рельеф - я так и не понял.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
"Механизмы" (в РО, указанные цели). Вообщем-то влияет на цели способностей и атаки.
Конкретно влияет на ремонт. Привел этот пример с ремонтом не случайно. Здания и артиллерия чинятся с помощью спец-способности "ремонт" у рабов (при наличии ресурсов, если ресурсы на нуле, то раб будет стоять). Если у здания во время игры триггерно убрать классификацию "техника", то авторемонта не будет, раб будет стоять
Отредактирован PT153
Прикрепил карту.
0 - Terrain (ландшафт) то же самое что и тыкать по земле.
1 - None (ничего)
512 - декорация decoration
128 - wall стена и ворота
256 - осколки, развалины, мусор, прочее debris
1024 - мост bridge
4 - воздушный air
4096 - self сам
1048576 - уязвимый Vulnerable
8388608 - Non-Hero
24576 - друзья, союзники friend
33554432 - мертвые dead
1073741824 - не древа non-ancient
67108864 - органические (не техника) Organic
536870912 - убийца suicidal
если нет атаки проверяем наличие способности атаки "Aatk" lv>0
или выключена ли атака
local b1 = BlzGetUnitWeaponBooleanField(unit, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0)
local b2 = BlzGetUnitWeaponBooleanField(unit, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1)
Отредактирован MpW
2^0 - None
2^1 - ground
2^2 - air
2^3 - Structure
2^4 - ward
2^5 - item
2^6 - tree
2^7 - wall
2^8 - debris
2^9 - decoration
2^10 - bridge
2^11 - ??
2^12 - self (распознается игрой как кастер, атакующий)
2^13 - Player Units (цели распознаются в игре)
2^14 - ??
2^14,585 - friend (цель распознается в игре враг/союзник. зависят от параметров союза игроков)
2^15 - Neutral (цель опознается в игре. наверн это у нейтральных здании указано в классификациях neutral )
2^16 - enemy (цель распознается в игре враг/союзник)
2^16,907 - not self (распознается игрой как кастер, атакующий)
2^17 - ??
2^18 - ??
2^19 - ??
2^20 - Vulnerable (может меняться параметр уязвимости абилками или кодом)
2^21 - Invulnerable (может меняться параметр уязвимости абилками или кодом)
2^22 - hero
2^23 - Non-Hero
2^24 - alive (живые. меняется в игре от состояние жив/мертв(труп) )
2^25 - dead (мертвые. это не нежить. а трупы. это для воскрешения мертвых или как пример трупы для труповозки)
2^26 - Organic (органические. не техника)
2^27 - Mechanical
2^28 - non-suicidal
2^29 - suicidal
2^30 - non-ancient
2^31 - ancient
hero/non hero - строгая установка по типу "and". как поставил в атаке героя, то все, атакует только героя, на обычных нельзя навести.
self/not self - можно исключить. в атаке она не работает, судя по всему это только для абилок. ну и очевидно юнит сам себя атаковать не может. но пробовал параметр "self" задать грифону, и в атаке паладосу "not self", но паладину плевать на этот флаг
organic/mechanical, suicidal/ non suicidal, ancient/non ancient - ну по типу "and"
friend,enemy, units player, neutral, self/non self - в атаке эти параметры не работают. пробовал заставить атаковать только союзников, но похоже строго не получается заставить. Герой атакует даже врагов, нейтралов и пр. Эти группы работают только в абилках. можно исключить фильтром. Тем более поиском перебираем в группу, и отсеиваем.
Vulnerable/Invulnerable - эту группу по логике тоже можно исключить. какой толк атаковать неуязвимого? юнит не может. а второй параметр бесполезен. короче, это тоже для абилок.
alive/dead - это аналогично, тут труп или жив. Мертвого трупа атаковать юнит не может. Короче, для абилок.
item - понятно, предмет
debris - тут в декорации лезь не стал. тут у декора несколько типов целей (tree,wall,decoration,bridge,debris).
--or
Vulnerable/Invulnerable
alive/dead
self/not self - сам/не сам цель. можно шаманить с этим. пробовать паладосу поставить "not self", а в ауре "self". И бафф на героя не действовал
friend/enemy - союзник/враг. на примере ауры, аура может действовать только на окружающих союзников или врагов. Союзник - не только войска союзника, но и ваши войска. Однако, сам кастер не может на себя накинуть бафф, ибо по понятным причинам не входит в группу friend/enemy.
units player - это войска, принадлежащие игроку-кастеру. "Сам кастер" не входит в эту категорию.
neutral - нейтральный юнит. по факту этим обозначают нейтральные здания. не видал других
0 - tree (неизвестный параметр)
2^0=1 - giant (неизвестный параметр)
2^1=2 - undead (нежить, для абилок. судя по всему где-то в абилках сшито)
2^2=4 - sumoned (вызванные. нигде не видел в ро у сумонов этот параметр. а значит, задается абилками призыва)
2^3=8 - mechanical (техника для ремонта указывает этот параметр. можно обозначить юнита в качестве целях "механический", но и еще в классификации указать "техника")
2^4=16 peon
2^5=32 - suicidal
2^6=64 - town hall (главные ратуши)
2^7=128 - ancient (светлячок превращается в древо, древо имеет 2-ой параметр. может ходить)
2^8=256 - neutral (для нейтральных зданий)
2^9=512 - ward (убирает панель)
2^10=1024 - walkable (через него можно ходить, короче через него можно переходить. Видели портал? Юниты в него легко заходят. Так это меняет эта классификация)
2^11=2048 - tauren (минотавры, пример воскрешение минотавров)
Отредактирован MpW