Упрощеный способ выдачи предмета
Материал из S.T.A.L.K.E.R. Inside Wiki
Итак многие знают что есть длинная функций на выдавание предмета(Забыл просто как она пишеться полностью) так же есть длинная функция на выдачу предмета в диалоге:
(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета") end
Сейчас расскажу как можно упростить.Создаем любой скрипт.Например test.script.Пишем туда вот такую функцию <pre> 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
</pre> Написали?Хорошо!Создадим теперь ту самую упрощеную функцию.Пишеться она так
название_скрипта.actor_add_item("название предмета")
Ну например:
<lua> 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 </lua>
Итак сделали?Супер!Лезем теперь в 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