Классификация юнита
Хотел спросить. А вот стандартные триггерные команды добавить UnitAddType /удалить классификацию UnitRemoveType работают? Просто недавно заметил, что не работают (просто как-будто не меняется). Меняется только в РО. Даже не помню работали ли когда нибудь

Лучший ответ:
Похожие вопросы:

» ответ
Diazon, а чем сам манабёрн не подходит? Дай еще своим монстрам класс вызванные, будет им+ 20 чистого дмг и спецэффект манабёрна (цвет тока будет не розовый, а желтоватый у спецэффекта )
Манаберн наносит доп урона суммонам, но является орбом (не сочетается с другими орбами ) , хотя тесты и показали что манабёрн ближе по механике к критам чем к орбам и башам...
» ответ
Как это нету, в гуях есть эта функция: Раздел - Боевая единица, почти самый низ.
Удалить классификацию уже поставиленную в ро низя, как и поставить полноценную классификацию юниту у которого она не установлена в РО, к примеру работник сделанный триггерно будет проходить проверку - работник но не будет отображаться как незанятый работник, когда он стоит на месте.
» ответ
В наработках есть такие системы.




Просмотров: 2 103

» Лучшие комментарии


XGM Bot #1 - 2 года назад 4

Похожие вопросы:

» ответ
Diazon, а чем сам манабёрн не подходит? Дай еще своим монстрам класс вызванные, будет им+ 20 чистого дмг и спецэффект манабёрна (цвет тока будет не розовый, а желтоватый у спецэффекта )
Манаберн наносит доп урона суммонам, но является орбом (не сочетается с другими орбами ) , хотя тесты и показали что манабёрн ближе по механике к критам чем к орбам и башам...
» ответ
Как это нету, в гуях есть эта функция: Раздел - Боевая единица, почти самый низ.
Удалить классификацию уже поставиленную в ро низя, как и поставить полноценную классификацию юниту у которого она не установлена в РО, к примеру работник сделанный триггерно будет проходить проверку - работник но не будет отображаться как незанятый работник, когда он стоит на месте.
» ответ
В наработках есть такие системы.

Steal nerves #2 - 2 года назад 0
понял, что не все типы/классы юнитов меняются легко. Некоторые вообще не удаляются, не добавляются.
xgm.guru/p/wc3/wc3targets короче в этой статье есть древа, механика и самоубийцы. И из этих перечисленных великое множество вариантов можно сделать
Steal nerves #3 - 2 года назад (отредактировано ) 5
Вот список классификации:
» раскрыть
» герои
unittype UNIT_TYPE_HERO=ConvertUnitType(0) Герой [триггерно не меняется], Юнит считается героем благодаря равкоду, первая буква равкода должна быть большой/заглавной.
Не обязательно в РО юнита указывать его в качестве целей (если обычному юниту-не герою добавить, что относится к типу цели "Герой", не сработает проверка). В качестве цели способности или атаки можно отнести "Герои" или "Не герои".
» мертвый
unittype UNIT_TYPE_DEAD=ConvertUnitType(1) Мертвый юнит [триггерно не меняется]. Это реально мертвый юнит. Короче когда юнит умирает, у него остается труп. Считают мертвым юнитом только труп. Даже, если в РО добавить этого юнита к типу "Мертвый" (не путать с Нежить!), то не сработает. Короче тут тоже самое, что у героя.
В качестве цели способности или атаки можно отнести "Мертвый" или "Живой".
Хотя в редакторе существуют проверки на хп. Если больше нуля, то еще жив. Однако, бывает ситуации вроде способности "перерождения". Там по сути мертв, но в то же время и нет. Здоровье где-то 0.045
Точно не знаю, но выскажу предположение, что у мертвого юнита нет владельца, то есть кому принадлежит юнит. Хотя бред, есть "воскрешение" Паладина, как оно определяет, что мертвой свой.
» здание
unittype UNIT_TYPE_STRUCTURE=ConvertUnitType(2) Здание [триггерно не меняется]. Это сработывает, если в РО юнита установлена галочка "Характеристики - Является зданием".
Бесполезно относить к типу цели "здание", триггером не проверишь это (главную роль играет галочка "Является зданием", без этой галочки не сможешь сделать зданием, а также отнести этого юнита к зданию)
В качестве цели способности или атаки можно отнести "Здание" или "Не здание".
» воздушный
unittype UNIT_TYPE_FLYING=ConvertUnitType(3) "Воздушная боевая единица" в триггерах или "воздушные" в качестве цели в РО. [триггерно не меняется].
Даже, если дать в РО эту классификацию, то все равно может не заработать проверка на триггерах. Чтобы работало, необходимо, чтобы юнит был летающим, то есть изменить тип движения в РО юнита на "движение - тип Летающий". Необходимо отнести два эти пункта вместе: отнести к типу "воздушный", и изменить движение на "летающий"
Тип движения "летающий" и тип цели "воздушная" - это разные веши. Тип движения "летающий" влияет на столкновение, где может перемещаться. Например, может почти везде перемещаться (преградой являются деревья и черная граница). А тип цели воздушная устанавливают в качестве цели атаки или применения способности.
» наземный
unittype UNIT_TYPE_GROUND=ConvertUnitType(4) "Наземная боевая единица" в триггерах или "Наземные" в качестве цели в РО. [триггерно не меняется]. Аналогично, как у воздушной единицы, нельзя проверить у юнита с типом движения - "летающий". Если добавить заранее другой тип передвижения (все кроме летающего), то проверка работает.
Обычно всех юнитов (пеших и конных), даже плавающих, земноводных и парящих относят к наземных юнитам. это прописывается в РО к какому типу принадлежит юнит (к воздушному или наземному).
» может атаковать воздушные
unittype UNIT_TYPE_ATTACKS_FLYING=ConvertUnitType(5) "Может атаковать воздушные цели" [триггерно не меняется]. Это работает, если в указанных целях атаки у юнита в РО заранее указана "Воздушная цель". В противном случае, не будет работать триггерная проверка, и нельзя будет добавить или убрать юниту атаку.
» может атаковать наземные
unittype UNIT_TYPE_ATTACKS_GROUND=ConvertUnitType(6) "Может атаковать наземные цели" [триггерно не меняется]. Это работает, если в указанных атаки у юнита в РО указана заранее "Наземная цель". В противном случае, не будет работать триггерная проверка, и нельзя будет добавить или убрать юниту атаку.
» воин ближнего боя
unittype UNIT_TYPE_MELEE_ATTACKER=ConvertUnitType(7) "Воин ближнего боя" [триггерно не меняется]. Это работает в зависимости от типа оружия.
Юнит с типом оружия "обычное" считается воином ближнего боя(милишником), с остальными типами оружия (кроме "Нет") юнит относят к воину дальнего боя (ренжевику).
Только помните, что многие защитные способности типа каменные доспехи. благословление Элуны, укрыться щитом, панцирь с щитом и другие работают только в зависимости от типов атаки (тип атаки дальний бой, тип атаки обычная). Не путайте.
» воин дальнего боя
unittype UNIT_TYPE_RANGED_ATTACKER=ConvertUnitType(8) "Воин дальнего боя" [триггерно не меняется]. Это работает в зависимости от типа оружия.
Все типы оружия (кроме "Обычное" и "Нет"), которыми обладает юнит, можно отнести к оружию дальнего боя:
Только помните, что многие защитные способности типа каменные доспехи. благословление Элуны, укрыться щитом, панцирь с щитом и другие работают только в зависимости от типов атаки (тип атаки дальний бой, тип атаки обычная). Не путайте.
» великан
unittype UNIT_TYPE_GIANT=ConvertUnitType(9) "Великан". Кажется, что ничего эта классификация не дает, не смог узнать кому принадлежит эта классификация. В списке указанных целей в атаке или в способности нет великана, это своего рода маленький минус. Единственный огромный плюс, могу давать и отбирать классификацию.
Единственное, что я заметил - это то, что написано в игре у юнита мелко "Великан" под названием юнита
Мб на воскрешение как-нибудь влияет. Типа тело свое при смерти не оставляет и все такое. Проверял, но что-то не то.
может где-то в способностях работает, хотя вряд ли
Недостаток: нигде этот класс не используется (в указанных целях способностей и атаки нет галочки "великан"). Единственное, где это может пригодится только триггерах (там проверять, добавлять, убавлять).
» вызванный
unittype UNIT_TYPE_SUMMONED=ConvertUnitType(10) "Вызванный". Классифицируют так юнитов, которых вызвали с помощью способностей.
Самое интересное, что можно использовать этот класс, триггерно добавляя или удаляя. Но полноценным вызванным не будет считаться. Так как нужно иметь баффы, время жизни. Но даже, если нацепить 'таймер жизни' и buffs, я не знаю будет ли считаться такой юнит вызванным. Кажется, вызванный создается способностями. Что значить быть полноценным вызванным? Это значит, что многие антимагические способности могут наносить ущерб вызванным существам (погром, рассеять магию и прочее), или даже контролировать их. Это не проверял, а прикольно будет если это будет работать
» оглушение или stun
unittype UNIT_TYPE_STUNNED=ConvertUnitType(11) "Застаненный юнит" или "Оглушение" [триггерно не меняется]. Юнит, который получил стан. Используется в качестве проверки. По идее, stun - оглушение - состояние юнита, получаемое от атаки способностей (например, сильный удар, по-другому bush) или применения способностей (например, молот бурь, удар грома, громовая поступь). При таком состоянии юнит не двигается, и не может атаковать, следовательно, дать вам сдачи тоже не может, то есть оглушен.
Есть идея, что оглушение получается от конкретных баффов (но не уверен, пробовал дать buff "Оглушение" простой ауре, проверял триггерами и ничего).
Однако, эта классификация не работает вообще. Удалить или добавить не получится через триггеры эту классификацию. Даже проверка не работает. В качестве проверки приходиться проверять бафф от молота бурь и прочее.
Есть мем как, там можно застанить триггерно и проверить:
» раскрыть
Установить, то ли снять. Похоже приставка Un говорит, что снимает stun с юнита
function UnStunUnit takes unit u returns nothing
Проверка - юнит в стане
function IsUnitStunned2 takes unit u returns boolean
Установить стан юниту
function SetStunToUnit takes unit u, boolean add returns nothing
Самая бесполезная классификация
» чума
unittype UNIT_TYPE_PLAGUED=ConvertUnitType(12) "Чума" [триггерно не меняется]. Это что-то типа отравления юнитов. Получает отравление чумы не от всех способностей (отравляющих способностей много, а вот чумных всего одна). Может быть чумных больше, но не стал искать, нашел только одну похожую способность (вообще-то их две, но они друг на друга похожи полями и характеристиками): это Ядовитое облако (мясник) и Ядовитое облако (Чумной дух) у юнитов Нежити. Эта способность типа ауры, заражает всех вокруг чумой. Как только кто-то заразиться, на него вешается бафф. Заражен будет на очень длительное время.
способность "Ядовитое Облако" у мясника (abomination)
Триггерно нельзя добавить или удалить классификацию. Но, зато можно проверить заражен ли чумой.
» сеть
unittype UNIT_TYPE_SNARED=ConvertUnitType(13) "Сеть" [триггерно не меняется]. Итак будет понятно, что ловит с помощью способности противников в сеть. Противники становятся временно неподвижными, но все же могут вас атаковать. Также если вражеская цель - воздушная цель, то ее опускают на землю, где добивают наземные единицы.
Ловчий у волчьих всадников
Паутина у могильщиков
Нельзя удалить или добавить триггерно эту классификацию, только проверить.
» нежить
unittype UNIT_TYPE_UNDEAD=ConvertUnitType(14) "Нежить (Андэад)" Вся раса нежити указана этой классификацией. Этот класс влияет на способности. Например, как светлая энергия может нанести вред (например, благодать положительно действует на живых, а на нежить отрицательно). Точно также действует темная энергия (Например, способность "лик смерти" убивает живых, а нежить не может трогать, даже, если она враждебна).
В указанных целях способности нет такого класса как "нежить", есть "Мертвые". Но не путайте мервых с нежитью. Мертвые - валяющие трупы на земле, у них обычно нет хозяев. А совсем другое - нежить.
Юнитам можно добавлять или удалять класс триггером. Также проверять.
» техника механический механизмы
unittype UNIT_TYPE_MECHANICAL=ConvertUnitType(15) "Техника" (в триггере),"Механический" (в РО, классификация). Есть еще
» Механизмы или организмы
"Механизмы" (в РО, указанные цели) влияют на цели атаки или способности.
В РО в указанных целях можно установить либо "механизмы" (не живое существо) либо "организмы" (живое существо). Больше создано для указывания/установки целей способностей и атаки.
"Механизмы" (в РО, указанные цели). Вообщем-то влияет на цели способностей и атаки.
Конкретно влияет на ремонт. Здания и артиллерия чинятся с помощью спец-способности "ремонт" у рабов (при наличии ресурсов, если ресурсы на нуле, то раб будет стоять).
"Техника/Механический" (в триггерах и в РО - эта и та же классификация) скорее всего добавлен для ремонта. Есть способности, называются ремонт. Они вот чинят танки, балисты, здания и прочее.
Примечание: Если указать в РО относится к типу цели "механизмы", то ничего не будет (триггерно проверить по "механизмы" никак). Даже противники, у которых указано "организмы", могут атаковать такую цель (но не должен по идее атаковать технику). Видимо, чтобы эти "механизмы" заработали, нужно добавить еще пункт "Механический" (работают вместе получается). Однако, если добавить триггерно классификацию, то противник, который атакует только органику почему-то перестает вас атаковать. Если удалить, то снова агрится и начнет атаковать.
» работник
unittype UNIT_TYPE_PEON=ConvertUnitType(16) "Работник или аналог" Скорее всего используется в стандартных сражениях.
Работники, которые ничего не делают, имеют иконку в углу карты. Как только начнут что-то делать эта иконка исчезнет. Сделана для удобства. Классификацию рабочий можно удалить, или добавить. При удалении классификации вместе с этим удаляется иконка, и она больше не показывается. Если добавишь классификацию, то наоборот, добавляется. Пока больше ничего не заметил.
Пишут на сайте, что: Такие юниты с классификацией убегают если их атаковать, и не атакуют сами без приказа. В РО: Характеристики - Может бежать (меняем значение на "Нет") - не отбегает когда бьют
В качестве разрешенных целей в способностей или атаке не заметил такую классификацию
» подрывник самоубийца
unittype UNIT_TYPE_SAPPER=ConvertUnitType(17) В триггере называют "Подрывник", в разрешенных целях способности и атаки юнита это "Самоубийца", или есть еще интересный момент "Не самоубийца". Итак понятно, что эта классификация дана самовзрывающим на смерть юнитам. Она вообще ничего не делает. Самое интересно, зачем же дали в целях "не самоубийца" - эту штуку можно использовать. Описано xgm.guru/p/wc3/wc3targets
пишут, что влияет на поведение юнитов. Типа не будут отбегать или убегать. когда кто-то их бьет. Не знаю, протестируйте сами
Можно триггерно добавлять/удалять
» ратуша
unittype UNIT_TYPE_TOWNHALL=ConvertUnitType(18) "Ратуша". Это главное здание расы. Как я понял сильно связано с стандартным сражением.
Не знаю точно, что оно делает. Выскажу предположение, что возможно в стандартных сражениях как-то. Если разрушить строение, то может выскачить таймер, и в углу будет показано сколько времени останется до поражения. Если я не ошибаюсь, поскольку мало играю в сражениях. Возможно в ИИ. И с героями как то связаны. В игровых константах можно расставлять зависимости ратуши от героя. Пока что мало знаю, изучал.
Немного не понятно. Вот можно посмотреть. что в способностях. Например, предмет "посох спасения" или "посох возвращения" у способности. В требованиях много чего намусолено
» древо
unittype UNIT_TYPE_ANCIENT=ConvertUnitType(19) "древо". В целях еще есть ("древо"/"не древо"). Это большие деревья эльфов, где выращивают войска (все деревья эльфов имеют этот параметр, кроме обычных строении: алтарей и колодцев). Не понятно для чего. Может для способностей, а может .... не знаю.
можно удалить/добавить классификацию триггерно
в способностях и в атаке юнита можно указать древо/не древо
» минотавр
unittype UNIT_TYPE_TAUREN=ConvertUnitType(20) "минотавр". Эта классификация не очень понятна, что делает. Кажется ничего не делает. Работает только с скилом "Помощь предков". Выделять еще одну галочку в РО для одного скила как-то странно. На герое этот скил не работает (ставил галочку "герой"), Не понимаю зачем герою-минотару ставить классификацию "минотавр".
Вроде своих минотавров воскрешает. Хотел воскрешать не своих минотавров (поставил галочку "друзья"). и заметил что те, кто умер и принадлежал союзникам, при воскрешении переходят на мою сторону.
Можно добавлять/удалять классификацию триггерно
Недостаток: нигде этот класс не используется (в указанных целях способностей и атаки нет галочки "минотавр"). Единственное, где это может пригодится только триггерах (там проверять, добавлять, убавлять).
» отравление
unittype UNIT_TYPE_POISONED=ConvertUnitType(21) "Отравление" [триггерно не меняется]. Этот класс получает юнит, когда отравлен и постепенно получает урон. Работает отравление от способности, отравляющих юнитов ядами и прочее
Пробовал наносить урон триггерно типом урона "Отравление", "Яд", "Болезнь", но ничего не получил
Триггерно нельзя добавить или удалить классификацию. Но, зато можно проверить заражен ли чумой.
» полиморф
unittype UNIT_TYPE_POLYMORPHED=ConvertUnitType(22) "Полиморфизм" [триггерно не меняется]. Этот класс получает юнит, когда кто-то превращает его в курицу или в овцу и других мелких животных.
Заметил панели юнитов, которые превратились в животных, пишут внизу над названием юнита мелко запись. В записи клонируют название юнита.
Триггерно нельзя добавить или удалить классификацию. Но, зато можно проверить превращен ли в курицу.
» сон
unittype UNIT_TYPE_SLEEPING=ConvertUnitType(23) "Сон". В качестве проверки работает. Это работает только со способностями, которые вводят в сон.
Существуют другие проверки, но это совсем не то. Они проверяют, что может ли спать юнит (у каждой нативки свое условие). А не то, что спит в данный момент. И работают вроде на нейтралов
» раскрыть
Есть в РО у юнита:
Характеристика - Спит (галочка - да; галочка - нет) действует это только на нейтралов. Проверить можно только UnitCanSleep
"Проверка UnitCanSleep: может ли юнит спать. То есть проверяет видимо не то, что спит в данный момент, а может ли спать юнит (у юнита указана в РО (где характеристика - Спит)"
"Проверка UnitIsSleeping: спит, когда никем не спровоцирован ночью. Если рядом никто не кастует заклинания,не атакует никто его друзей - то спит. Если атаковать, то проснувшийся на вас нападет или убежит. Обычно такое состояние можно достичь действием UnitAddSleep. Днем юнит просыпается. В действии UnitAddSleep пишут что юниты игроков 1-12 никогда не спят, это значит, что действует на нейтралов (проверка и действие не работают на не нейтралов)."
UnitAddSleep - дает через true юниту возможность спать. Теперь каждую ночь будет засыпать. Если снять через false, то ночью бодрствует и никогда не будет спать ночью.
"Проверка UnitCanSleepPerm: юнит в спячке, до сих пор. пока никто не разбует и не спровоцирует. Обычно достичь такого можно функцией UnitAddSleepPerm. Здесь тоже пишут. что юниты игроков 1-12 никогда не спят."
функции UnitCanSleepPerm и UnitAddSleepPerm у меня не работают, не удалось проверить. Но думаю понятно, что они делают.
Долго мучался с ними, разбираясь.
» сопротивление
unittype UNIT_TYPE_RESISTANT=ConvertUnitType(24) "Сопротивление". [триггерно не меняется]. Это не снижение урона, а снижение длительности действия заклинания (некоторые вообще не действуют). Короче время действия заклинания приравнивается к времени действия как у героя. Работает на способности "Защита от магии", для героев эта способность вообще бесполезна. также и на некоторых нейтралов с большим уровнем
» раскрыть
library IsUnitSpellResistant
*****************************************************************
* IsUnitSpellResistant
*
* written by: Anitarf
*
* In WC3, most debuff and stun spells have a decreased duration
* against heroes, creeps with a high enough level and units with
* resistant skin, while other spells such as Polymorph don't
* even work against such units. This function checks if a unit
* matches any of these criteria that would make it resistant to
* such spells, so you can make triggered spells work that way.
*****************************************************************
globals
private constant integer CREEP_RESISTANCE_LEVEL = 6 the level at which creeps gain spell resistance
endglobals
function IsUnitSpellResistant takes unit u returns boolean
return IsUnitType(u, UNIT_TYPE_HERO) or IsUnitType(u, UNIT_TYPE_RESISTANT) or (GetPlayerId(GetOwningPlayer(u))>11
and GetUnitLevel(u)>=CREEP_RESISTANCE_LEVEL)
endfunction
function IsUnitSpellImmune takes unit u returns boolean
return IsUnitType(u, UNIT_TYPE_MAGIC_IMMUNE)
endfunction
endlibrary
» мир духов астрал
unittype UNIT_TYPE_ETHEREAL=ConvertUnitType(25) "Мир духов". [триггерно не меняется]. Юнит переходит в астрал, становится прозрачно-зеленым. Обычно неуязвим в этом состоянии от обычного оружия. но уязвим от магического урона. Такого состояния можно достичь только способностями.
» иммунитет от магии
unittype UNIT_TYPE_MAGIC_IMMUNE=ConvertUnitType(26) "Магический иммунитет". [триггерно не меняется]. На юнита обычно нельзя навести прицелом активное заклинание, будет оповещение выводит на экран. что нельзя наводить на иммуных юнитов. На самом деле есть способность канал - у нее в настройках "Универсальное заклинание", которое позволяет кастовать даже на иммунных.
Итого можно триггерно изменять только эти классификации, остальные в РО:
Великан, Призванный, Нежить, техника, работник, подрывник, Ратуша, древо, минотавр
Есть еще в РО:
Нейтральный - не знаю, что это. Но это есть у нейтральных зданий. говорят, что из-за этого пропадает полоска здоровья. Нужно подольше поизучать. Может это как-то со способностями связаны типа продать предмет, продать юнита и др. Но уверен, что юнитов можно указать в качестве разрешенных целей ("нейтральный").
Может ходить - через него можно ходить, короче через него можно переходить. Видели портал? Юниты в него легко заходят. Так это меняет эта классификация.
Страж - пропадают панель команд
quq_CCCP #4 - 2 года назад 0
Насчет перерождений, а там юнит не умирает на самом деле - это фикция.
Классификацию страж можно сменить и проверить на её наличие только мемхаком.
Steal nerves #5 - 2 года назад (отредактировано ) 0
quq_CCCP, ну это понятно
вот карты на которых проверял это все
Мне вот интересно, а у вас работает функции с sleep? написано. что не работают на юнитов игроков 1-12, понятно что действует на нейтралов. Но вообще не понятные функции.
UnitCanSleepPerm
UnitAddSleepPerm
прикреплены файлы
JaBeN_Симфер #6 - 2 года назад (отредактировано ) 1
Оглушенный юнит получает приказ stun, точнее GetIssuedOrderId() == 851973.
Ратуша по идее должна реагировать на нажатие пробела и переносить камеру к ней.
Steal nerves #7 - 2 года назад (отредактировано ) 0
Благодарю. За то, что оглушенный юнит получает приказ, приму к сведению. Полезная инфа. подзабыл уже.
Ратуша точно не за это отвечает, пробовал, смещает камеру к исходной точке игрока. Короче за смешение камеры с помощью пробела отвечает исходная стартовая локация StartLocation
» раскрыть
native DefineStartLocation takes integer whichStartLoc, real x, real y returns nothing
native DefineStartLocationLoc takes integer whichStartLoc, location whichLocation returns nothing
native ForcePlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothing
native GetPlayerStartLocation takes player whichPlayer returns integer
constant native GetStartLocationLoc takes integer whichStartLocation returns location
constant native GetStartLocationX takes integer whichStartLocation returns real
constant native GetStartLocationY takes integer whichStartLocation returns real
native SetPlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothing