Упрощеный способ выдачи предмета
Материал из 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