Доброго времени суток.
Сделал режим выбора сложности игры через триггер диалогов. Хочу, чтобы от выбранной сложности менялись юниты в игре и их способности (кастомные) соответственно. При старте игры юниты создаются триггерами.
Для этого создал массив с юнитами и способностями. В данном случае Юнит должен призвать суммонов ( на основе призыв волков) при атаке или получении урона. Но сделать это мне не удаётся, да и не знаю реально ли это)
На скрине видно выключенную функцию ( с ней юнит сразу и единовременно использует скилл)
Вопрос к знатокам:
Можно ли сделать триггерно созданному юниту автокаст триггерного скилла по кд способности при условии получения юнитом урона?
P.S. Новичок, спасибо за ответы заблаговременно

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

извини, что значит сложность в переменную?
То и значит. Создаёшь переменную, удобней всего целлочисленную, и устанавливаешь в неё сложнось:
  • 0 - лёгкая
  • 1 - норма
  • 2 - хард
Ну и в каждом триггере, который зависит от сложности делаешь проверку, например:
Если сложность >= 1
	Призвать волка
Иначе
	Призвать свинью
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
4 недели назад
0
Похожие вопросы:

ответ
ответ
~8gabriel8:
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.

С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.

Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.

Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.

На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.

Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.

Нашёл твои вопросы:
В них бы и спрашивал, что непонятно. А то тебе отвечают, а ты игнорируешь, словно очень умный.
Тебе даже вариант без триггеров для четвёртого пункта сделали: xgm.guru/p/wc3/230191/comments?postid=426457#comment5
ответ
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

function Trig_Pokupka_Conditions takes nothing returns boolean
if ( not ( GetTriggerUnit() == gg_unit_Othr_0049 ) ) then
return false
endif
return true
endfunction
function Trig_Pokupka_Actions takes nothing returns nothing
call BuyItem(ТВОЙ_МАГАЗ, ИД_СВИТКА, gg_unit_Othr_0049)
endfunction
===========================================================================
function InitTrig_Pokupka takes nothing returns nothing
set gg_trg_Pokupka = CreateTrigger( )
call TriggerRegisterUnitInRangeSimple( gg_trg_Pokupka, 256, gg_unit_ngme_0056 )
call TriggerAddCondition( gg_trg_Pokupka, Condition( function Trig_Pokupka_Conditions ) )
call TriggerAddAction( gg_trg_Pokupka, function Trig_Pokupka_Actions )
endfunction

Ван Рок, ты задал много хороших вопросов и если почитаешь статьи о Jass, то узнаешь на них ответ. В представленном виде это не триггер с условиями и ивентом, это просто функция, которую можно вызвать.

Вызывать можно и в гуи через кастом скрипт
ответ
TheBlakeRed, сорь что не ответил сразу, в бане сидел, в общем у тебя вместо включения триггера на вход - его выключение, а портал у тебя не тот стоял в условиях, равкоды смотреть надо, у людей во вкладке кампания такой портал, а у тебя нейтралы - сражения - ашенвальский портал, который как здание выглядит
в общем я поправил и добавил ещё один вариант со стандартным порталом, тебе нужно просто разблокировать одни функции на портал и заблокировать/удалить другие, думаю ты разберёшься

0
29
4 недели назад
0
Заносишь сложность в переменную. Дальше ловишь атаку/урон и призываешь волков.
Узнать кд способности на ваниле нельзя, так что используй или реф или UjAPI.

Можно ли сделать триггерно созданному юниту автокаст триггерного скилла по кд способности при условии получения юнитом урона?
Можно.
Ответы (2)
0
1
4 недели назад
0
nazarpunk, извини, что значит сложность в переменную?
Я реализовал, но кастылями, а именно создал 2 триггер, с событием если игрок получает урон, с условием юнит в зоне видимости игрока, действие применить способность.
Но если расскажешь - буду признателен!)
0
29
4 недели назад
Отредактирован nazarpunk
0
извини, что значит сложность в переменную?
То и значит. Создаёшь переменную, удобней всего целлочисленную, и устанавливаешь в неё сложнось:
  • 0 - лёгкая
  • 1 - норма
  • 2 - хард
Ну и в каждом триггере, который зависит от сложности делаешь проверку, например:
Если сложность >= 1
	Призвать волка
Иначе
	Призвать свинью
Принятый ответ
0
27
4 недели назад
0
Нейтрально враждебными и другими управляет ии. Чтобы юниты слушались твоих приказов, их нужно отдавать игрокам, например, сделай 12 слот неиграбельным для игроков, закрой его

И в чём прикол добавлять абилку юниту триггера и устанавливать применяемую способность в переменную, если событие диалога?

ай лан, пофиг, на скринах ахинея какая-то, атакующие, применяющие
Чтобы оставить комментарий, пожалуйста, войдите на сайт.