Упрощеный способ выдачи предмета — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
RedPython (обсуждение | вклад) |
|||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
− | Итак многие знают что есть длинная | + | Итак, многие знают, что есть длинная функция на выдачу предмета (забыл просто как она пишеться полностью), так же есть длинная функция на выдачу предмета в диалоге: |
− | функция на выдачу предмета в диалоге: | + | <lua> |
− | < | + | |
function give_item(first_speaker, second_speaker) | function give_item(first_speaker, second_speaker) | ||
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета") | dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета") | ||
end | end | ||
− | </ | + | </lua> |
− | Сейчас расскажу как можно упростить.Создаем любой скрипт.Например test.script.Пишем туда вот такую функцию | + | Сейчас расскажу как можно упростить способ. |
− | < | + | |
+ | Создаем любой скрипт. Например, '''test.script'''. Пишем туда вот такую функцию | ||
+ | <lua> | ||
function actor_add_item(section) | function actor_add_item(section) | ||
− | alife():create(section, | + | alife():create(section, |
db.actor:position(), | db.actor:position(), | ||
− | db.actor:level_vertex_id(), | + | db.actor:level_vertex_id(), |
db.actor:game_vertex_id(), | db.actor:game_vertex_id(), | ||
db.actor:id()) | db.actor:id()) | ||
end | end | ||
− | </ | + | </lua> |
− | Написали?Хорошо!Создадим теперь ту самую упрощеную функцию. | + | Написали? Хорошо! Создадим теперь ту самую упрощеную функцию. Пишется она так: |
− | < | + | <lua> |
название_скрипта.actor_add_item("название предмета") | название_скрипта.actor_add_item("название предмета") | ||
− | </ | + | </lua> |
Ну например: | Ну например: | ||
− | < | + | <lua> |
function give_equip() | function give_equip() | ||
give_item.actor_add_item("wpn_pm") | give_item.actor_add_item("wpn_pm") | ||
Строка 42: | Строка 43: | ||
give_item.actor_add_item("stalker_outfit") | give_item.actor_add_item("stalker_outfit") | ||
end | end | ||
− | </ | + | </lua> |
− | Итак сделали?Супер!Лезем теперь в config/gameplay/info_l01escape.xml и после строчки: | + | Итак сделали? Супер! Лезем теперь в ''config/gameplay/info_l01escape.xml'' и после строчки: |
− | < | + | <xml> |
<info_portion id="esc_kill_gunslinger"> | <info_portion id="esc_kill_gunslinger"> | ||
<task>storyline_eliminate_gunslinger</task> | <task>storyline_eliminate_gunslinger</task> | ||
− | </ | + | </xml> |
+ | |||
Пишем: | Пишем: | ||
<action>test.give_equip</action> | <action>test.give_equip</action> | ||
− | Там где test это название скрипта.give_equip название функции | + | Там где '''test''' - это название скрипта.'''give_equip''' - название функции |
В итоге должно получиться вот так: | В итоге должно получиться вот так: | ||
− | < | + | <xml> |
<info_portion id="esc_kill_gunslinger"> | <info_portion id="esc_kill_gunslinger"> | ||
<task>storyline_eliminate_gunslinger</task> | <task>storyline_eliminate_gunslinger</task> | ||
Строка 59: | Строка 61: | ||
<article>sl_beginning</article> | <article>sl_beginning</article> | ||
</info_portion> | </info_portion> | ||
− | </ | + | </xml> |
Теперь при начале новой игры будет выдаваться экипировка! | Теперь при начале новой игры будет выдаваться экипировка! | ||
− | Итак.Многие кто хоть немного разбираються в скриптах уже догадались что функция стремная.Нету такой упрощеной штуки как выдавание сразу нескольких предметов за один вызов.Но ничего.И тут мы выкрутимся.Будем пользоваться функцией for i do.Привожу пример: | + | Итак. Многие кто хоть немного разбираються в скриптах уже догадались что функция стремная. Нету такой упрощеной штуки как выдавание сразу нескольких предметов за один вызов. Но ничего. И тут мы выкрутимся. Будем пользоваться функцией '''for i do'''. |
− | < | + | |
+ | Привожу пример: | ||
+ | <lua> | ||
function give_equip() | function give_equip() | ||
give_item.actor_add_item("wpn_pm") | give_item.actor_add_item("wpn_pm") | ||
Строка 74: | Строка 78: | ||
end | end | ||
end | end | ||
− | </ | + | </lua> |
− | Итак если хотите регулировать число выдаваемых предметов то после i=1, ставим то число которое вам нужно | + | Итак, если хотите регулировать число выдаваемых предметов, то после '''i=1''', ставим то число которое вам нужно. |
− | Фух.Вроде все разобрали... | + | |
− | Привел статью в полный порядок так же устранил пару недочетов:'''Fireman3000''' | + | Фух. Вроде все разобрали... |
+ | |||
+ | Привел статью в полный порядок, так же устранил пару недочетов: '''Fireman3000''' | ||
− | [[Категория: | + | [[Категория:Trash]] |
Текущая версия на 21:27, 17 августа 2011
Итак, многие знают, что есть длинная функция на выдачу предмета (забыл просто как она пишеться полностью), так же есть длинная функция на выдачу предмета в диалоге:
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