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

Упрощеный способ выдачи предмета — различия между версиями

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

Перейти к: навигация, поиск
 
(не показаны 9 промежуточные версии 6 участников)
Строка 1: Строка 1:
Итак многие знают что есть длинная функций на выдавание предмета(Забыл просто как она пишеться полностью) так же есть длинная
+
Итак, многие знают, что есть длинная функция на выдачу предмета (забыл просто как она пишеться полностью), так же есть длинная функция на выдачу предмета в диалоге:
функция на выдачу предмета в диалоге:
+
<lua>
<pre>
+
function give_item(first_speaker, second_speaker)  
(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
</pre>
+
</lua>
 +
Сейчас расскажу как можно упростить способ.
 +
 
 +
Создаем любой скрипт. Например,  '''test.script'''. Пишем туда вот такую функцию
 
<lua>
 
<lua>
Сейчас расскажу как можно упростить.Создаем любой скрипт.Например test.script.Пишем туда вот такую функцию
 
<pre>
 
 
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>
</pre>
+
Написали? Хорошо! Создадим теперь ту самую упрощеную функцию. Пишется она так:
Написали?Хорошо!Создадим теперь ту самую упрощеную функцию.Пишеться она так
+
<lua>
<pre>
+
 
название_скрипта.actor_add_item("название предмета")
 
название_скрипта.actor_add_item("название предмета")
</pre>
+
</lua>
 
Ну например:
 
Ну например:
<pre>
 
 
<lua>
 
<lua>
 
function give_equip()
 
function give_equip()
Строка 46: Строка 44:
 
end
 
end
 
</lua>
 
</lua>
</pre>
+
Итак сделали? Супер! Лезем теперь в ''config/gameplay/info_l01escape.xml'' и после строчки:
Итак сделали?Супер!Лезем теперь в config/gameplay/info_l01escape.xml и после строчки:
+
<xml>
<text>
+
 
<info_portion id="esc_kill_gunslinger">
 
<info_portion id="esc_kill_gunslinger">
 
<task>storyline_eliminate_gunslinger</task>
 
<task>storyline_eliminate_gunslinger</task>
</text>
+
</xml>
 +
 
 
Пишем:
 
Пишем:
 
<action>test.give_equip</action>
 
<action>test.give_equip</action>
Там где test это название скрипта.give_equip название функции
+
Там где '''test''' - это название скрипта.'''give_equip''' - название функции
 
В итоге должно получиться вот так:
 
В итоге должно получиться вот так:
<pre>
+
<xml>
 
<info_portion id="esc_kill_gunslinger">
 
<info_portion id="esc_kill_gunslinger">
 
<task>storyline_eliminate_gunslinger</task>
 
<task>storyline_eliminate_gunslinger</task>
Строка 63: Строка 61:
 
<article>sl_beginning</article>
 
<article>sl_beginning</article>
 
</info_portion>
 
</info_portion>
</pre>
+
</xml>
 
Теперь при начале новой игры будет выдаваться экипировка!
 
Теперь при начале новой игры будет выдаваться экипировка!
Итак.Многие кто хоть немного разбираються в скриптах уже догадались что функция стремная.Нету такой упрощеной штуки как выдавание сразу нескольких предметов за один вызов.Но ничего.И тут мы выкрутимся.Будем пользоваться функцией for i do.Привожу пример:
+
Итак. Многие кто хоть немного разбираються в скриптах уже догадались что функция стремная. Нету такой упрощеной штуки как выдавание сразу нескольких предметов за один вызов. Но ничего. И тут мы выкрутимся. Будем пользоваться функцией '''for i do'''.
<pre>
+
 
 +
Привожу пример:
 +
<lua>
 
function give_equip()
 
function give_equip()
 
give_item.actor_add_item("wpn_pm")
 
give_item.actor_add_item("wpn_pm")
Строка 78: Строка 78:
 
end
 
end
 
end
 
end
</pre>
+
</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

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