Делаю карту по типу защиты замка. Максимально хардкорную, захотелось совсем извратиться - дать крипам некромантам скилл, поднимающий рабочих, которые в свою очередь будут пытаться построить башню рядом с Замком (здание, которое игркоам необходимо защищать)
Вопрос:
как заставить скелета-рабочего (нестандартная единица) построить башню (нестандартную единицу), после того, как его призвал некромант?

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

Отслеживать вызов юнита и добавлять в группу
Каждые х сек. проверять приказ у всех этих юнитов и отдавать приказ строить.
Загруженные файлы
2
19
7 лет назад
2
1
28
7 лет назад
1
либо сделать постройку через скилл "игрушечная башня" либо отдать приказ на постройку
0
11
7 лет назад
0
поднятые мертвецы не могут использовать способности. предлагаю делать триггерно делать дамми юнита, который будет строить башню рядом с поднятым мертвецом. цонечно сам скелет не будет выполнять анимацию постройки. можно сделать типа башня сама строится, будто зиккурат в нежити.
1
5
7 лет назад
Отредактирован Datar1337
1
Dragonear:
поднятые мертвецы не могут использовать способности.
Почему же? Если например дать постройку скелету (обычному, который призывается), то он сможет построить здание, не?
Вот через гальванизацию нельзя
1
20
7 лет назад
1
Отслеживать вызов юнита и добавлять в группу
Каждые х сек. проверять приказ у всех этих юнитов и отдавать приказ строить.
Загруженные файлы
Принятый ответ
0
17
7 лет назад
0
biridius:
Отслеживать вызов юнита и добавлять в группу
Каждые х сек. проверять приказ у всех этих юнитов и отдавать приказ строить.
а тогда как заставить их строить в указанном месте? я так понял ему нужо сделать так, что некромант (рабочий) мог выбрать нужную ему постройку, установит ее в нужное место, вызвать скелета, и чтобы он построил имено там, нужную постройку
1
27
7 лет назад
Отредактирован MpW
1
bazeba, через приказ вроде (узнаем равкод здания или строковое название здания) или через предмет со способностью игрушечной фермы
нативки приказов
строительство (приказы в точку)
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
    if (unitId == 'ugol') then //проклятый рудник
        return IssueHauntOrderAtLocBJ(whichPeon, loc)
    else
        return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
    endif
endfunction
стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
ГРУППЫ - ОТРЯДЫ, групповые стандартные приказы
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отдает отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
нестандартные приказы
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью объекта instantTargetWidget
Пример: есть приказ на гуи "dropitem" выбросить предмет, на самом деле этот предмет можно дропнуть другому юниту (герою, или в магазин. если в магазин передаешь, то продает его). Короче на этом примере можно передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него. Это был просто пример, хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantPointOrder заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью объекта instantTargetWidget.
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку. Хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
приказы с итемами
юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть объект widget: такие как юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean 
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря (может помочь с циклом, например узнать до скольки перебирать слоты и др.)
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
иммитация
как понял ниже три заставляют чужого юнита делать действия от имени игрока forWhichPlayer:
  1. магазин покупает/продает юнитов и предметов от имени чужого игрока (пример IssueNeutralImmediateOrder)
  2. магазин переключить на героя с помощью smart, иначе герой не купит (пример IssueNeutralTargetOrder)
  3. мастерскую гоблина заставляет делать разведку в точке (IssueNeutralPointOrder)
чаще всего эти нативки помогают в покупках/продажах, neutralStructure представляется часто как магазин, у которого можно что-то купить.
иммитация от имени игрока
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: нативка IssueNeutralImmediateOrder - это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer что-то делать (например нанимать войска)
иммитация от имени игрока в цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
Объяснение: нативка IssueNeutralTargetOrder - заставляет что-то делать нейтральное здание neutralStructure с целью (купить выбранную цель у игрока; переключится на героя, тем самым открыв панель магазина)
иммитация от имени игрока в точку
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
Объяснение: нативка IssueNeutralPointOrder - заставляет что-то делать нейтральное здание neutralStructure с точкой. Думаю, эта штука, к примеру вроде типа помогает разведку делать. Помните, у мастерской гоблина гоблина разведку делать
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
xgm.guru/p/wc3/warden-buyitem возьмем пример
вариант Warden
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
  if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart", ToUnit) then
    return IssueNeutralImmediateOrderById(GetOwningPlayer(ToUnit), FromShop, ItemID) or IssueImmediateOrderById(FromShop, ItemID)
  endif
  return false
endfunction
вариант agentex
function BuyItem takes unit u, unit shop, integer id returns boolean
  call IssueNeutralTargetOrder(GetOwningPlayer(u), shop, "smart", u)
  return IssueNeutralImmediateOrderById(GetOwningPlayer(u), shop, id)
endfunction
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
xgm.guru/p/100/184889 посмотри здесь тему, посмотри карты. Там рабочии вокруг ратуши строит фермы, вместо ферм можно чего-нибудь другое построить
Чтобы оставить комментарий, пожалуйста, войдите на сайт.