Здравствуйте, зарание извиняюсь, но как сделать триггерно чтобы герой покупал предметы? Я уже буквально весь сайт облазил и нативки смотрел и особенно вот это xgm.guru/p/wc3/warden-buyitem.
Но что-то ничего не понятно, гуглил на англоязычных сайтах там еще непонятнее. Мне бы лучше пример конкретный накидать, скажем, событие - Тралл подходит к лавке гоблина, и покупает свиток телепортации. Можно тригерами, можно написать через JASS. Главное именно с этими именами и названиями, Траллом и свитком, ну или с любыми другими, чтобы я как по шаблону понял куда свое подставить. Буду очень благодарен, если кто поможет.

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

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, то узнаешь на них ответ. В представленном виде это не триггер с условиями и ивентом, это просто функция, которую можно вызвать.

Вызывать можно и в гуи через кастом скрипт
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
0
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
Что здесь непонятного? FromShop - лавка, ItemID - id свитка, ToUnit - Тралл

Но вообще можешь просто отнимать голду и выдавать предмет
0
1
2 года назад
0
Непонятно все, как это оформить, куда подставлять тралла вместо ToUnit или вместо unit выделенного синим? Как назвать Тралла "Othr"? или надо писать что-то типа local unit FromShop = gg_unit_Othr_0086? Где само действие "купить"? Это ведь условие какое-то чтоли, где call и т.д. сам приказ, какие-то if, return еще и boolean в конце, я такое только в условиях видел. Почему в функции просто BuyItem, а не Trig_BuyItem_Actions? как это правильно все оформить, вот таких мелочей я и не понимаю, я могу готовый пример переделать, а таких не встречал. Вот например скрипт: Юнит подходит к лавке, если юнит Тралл, он совершает действие - вызывает своих волков. Вопрос; как мне сделать чтобы он вместо вызова волков купил свиток?
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 IssueImmediateOrderBJ( gg_unit_Othr_0049, "spiritwolf" )
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
Примерчик бы мне, рабочий вместо тысячи слов и я бы разобрался.
1
19
2 года назад
1
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, то узнаешь на них ответ. В представленном виде это не триггер с условиями и ивентом, это просто функция, которую можно вызвать.

Вызывать можно и в гуи через кастом скрипт
Принятый ответ
0
1
2 года назад
Отредактирован Ван Рок
0
Спасибо большое, выручил! До статей доберусь наверное, но не все разу. Гуи это что? Кастом скрипт, это же вроде кусок кода вставлять по одной строчке прямо в редакторе.
0
13
2 года назад
Отредактирован Borodach
0
Можно по методу
Герой трал входит в область "магазин"
Если у игрока золота больше стоимости свитка
создать герою предмет свиток
Отнять у игрока золото
Чтобы оставить комментарий, пожалуйста, войдите на сайт.