Вы находитесь на сайте модмейкеров.
Четверг, 05.08.2021, 20:33
Статьи Warcraft3 Триггеры

Награда за убийство


Регулирование значений в Редакторе объектов.




В первую очередь, вам необходимо знать, что награда за убийство боевой единицы - случайное значение между (базовым значением + кол-вом костей) и (базовым значением + кол-вом костей * кол-во граней у кости).
В Редакторе объектов у любого воина есть такие поля:


Характеристики - Награда за уничтожение - базовая.
Характеристики - Награда за уничтожение - кол-во граней у кости.
Характеристики - Награда за уничтожение - кол-во костей.


Эти значения определяют призовое золото, которое является случайным числом между (базовым значением + кол-вом костей) и (базовым значением + кол-вом костей * кол-во граней у кости)

Характеристики - Призовая древесина - базовое значение.
Характеристики - Призовая древесина - количество граней.
Характеристики - Призовая древесина - количество кубиков.


Эти значения определяют призовое дерево, которое является случайным числом между (базовым значением + кол-вом кубиков) и (базовым значением + кол-вом кубиков * кол-во граней)

Помня эти правила, вы сможете на свой вкус отредактировать призовое золото и древесину. А теперь приступим к триггерам...



Регулирование значений при помощи триггеров.




Для регулирования значений награды триггерно, нам сначала необходимо научиться регулировать встроенную систему - включать и выключать её. Для этого применяется действие:


Оно отключает или включает те значения, что мы регулировали в Редакторе объектов. Допустим, мы не хотим использовать значение Редактора объектов, т.к. его нельзя отловить и хотим всё сделать при помощи триггеров. Тогда придётся сделать такой цикл:


Это отключит движок получения награды.
Теперь мы можем сымитировать этот движок триггерно. Здесь нам поможет такая Jass-функция:
Код

function Bounty takes player whichplayer, integer bounty, real x, real y returns nothing  
  local texttag t=CreateTextTag()  
  local string s="+"  
  call AdjustPlayerStateBJ( bounty, whichplayer, PLAYER_STATE_RESOURCE_GOLD )  
  if bounty<0 then  
  set s=""  
  endif  
  call SetTextTagText(t,s+I2S(bounty),0.025)  
  call SetTextTagPos(t,x,y, 0.00)  
  call SetTextTagColor(t,255,220,0,255)  
  call SetTextTagVelocity(t,0,0.03)  
  if (GetLocalPlayer()==whichplayer) then  
  call SetTextTagVisibility(t,true)  
  set s="UI\\Feedback\\GoldCredit\\GoldCredit.mdl"  
  else  
  call SetTextTagVisibility(t,false)  
  set s=""  
  endif  
  call DestroyEffect(AddSpecialEffect(s,x,y))  
  call SetTextTagFadepoint(t,2)  
  call SetTextTagLifespan(t,3)  
  call SetTextTagPermanent(t,false)  
  set t=null  
  endfunction


Мы можем вставить её в основной код карты, затем вызвать в триггере с событием смерти боевой единицы Custom script:
Код

call Bounty(GetOwningPlayer(GetKillingUnit()),20,GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))


В таком случае убивающий будет получать по 20 ед. золота за убитую боевую единицу.


Вот и всё по вознаграждениям. Экспериментируйте, и у вас всё получится! Спасибо за внимание.
Категория: Триггеры | Добавил: Ov3R (13.01.2014) | Автор: [DUOS] or Duosora
Просмотров: 2424 | Комментарии: 1 | Теги: как сделать награду за убийство в w, награда за убийство, награда в world editor, награда в warcraft 3, награда за убийство в warcraft 3 | Рейтинг: 4.0/1
Всего комментариев: 1
avatar
1 UZzip • 14:06, 15.01.2014
+5 реп и лучше не пользуйся желтым цветом.
ComForm">
avatar
W3 - Всё для картостроения. 2021-2010 |