Упрощеный способ выдачи предмета — S.T.A.L.K.E.R. Inside Wiki

Упрощеный способ выдачи предмета

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Итак многие знают что есть длинная функций на выдавание предмета(Забыл просто как она пишеться полностью) так же есть длинная функция на выдачу предмета в диалоге:

function give_item(first_speaker, second_speaker) 
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета")
end

Сейчас расскажу как можно упростить.Создаем любой скрипт.Например test.script.Пишем туда вот такую функцию

function actor_add_item(section)
alife():create(section,	
db.actor:position(),
db.actor:level_vertex_id(),	
db.actor:game_vertex_id(),
db.actor:id())
end

Написали?Хорошо!Создадим теперь ту самую упрощеную функцию.Пишеться она так

название_скрипта.actor_add_item("название предмета")

Ну например:

function give_equip()
  give_item.actor_add_item("wpn_pm")
  give_item.actor_add_item("wpn_ak74")
  give_item.actor_add_item("bandage")
  give_item.actor_add_item("bandage")
  give_item.actor_add_item("bandage")
  give_item.actor_add_item("medkit") 
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_5.45x39_fmj")
  give_item.actor_add_item("ammo_9x18_fmj")
  give_item.actor_add_item("ammo_9x18_fmj")
  give_item.actor_add_item("ammo_9x18_fmj")
  give_item.actor_add_item("stalker_outfit")
end

Итак сделали?Супер!Лезем теперь в config/gameplay/info_l01escape.xml и после строчки:

 
<info_portion id="esc_kill_gunslinger">
<task>storyline_eliminate_gunslinger</task>
 

Пишем: <action>test.give_equip</action> Там где test это название скрипта.give_equip название функции В итоге должно получиться вот так:

<info_portion id="esc_kill_gunslinger">
<task>storyline_eliminate_gunslinger</task>
<action>test.give_equip</action>
<article>about_enciclopedia</article>
<article>sl_beginning</article>
</info_portion>

Теперь при начале новой игры будет выдаваться экипировка! Итак.Многие кто хоть немного разбираються в скриптах уже догадались что функция стремная.Нету такой упрощеной штуки как выдавание сразу нескольких предметов за один вызов.Но ничего.И тут мы выкрутимся.Будем пользоваться функцией for i do.Привожу пример:

function give_equip()
give_item.actor_add_item("wpn_pm")
give_item.actor_add_item("wpn_ak74")
give_item.actor_add_item("medkit") 
for i=1, 3 do this.actor_give_item("bandage")
end
for i=1, 10 do this.actor_give_item("ammo_5.45x39_fmj")
end
for i=1, 3 do this.actor_give_item("ammo_9x18_fmj")
end
end

Итак если хотите регулировать число выдаваемых предметов то после i=1, ставим то число которое вам нужно Фух.Вроде все разобрали... Привел статью в полный порядок так же устранил пару недочетов:Fireman3000

Другие места
LANGUAGE