Спавн обьектов через db.script — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Спавн обьектов через db.script — различия между версиями

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

Перейти к: навигация, поиск
(Исправил ссылку на "Спавн через скрипт")
(Авторы)
 
(не показаны 5 промежуточные версии 2 участников)
Строка 35: Строка 35:
 
Все! Теперь после того, как мы появимся у нас в инвентаре будет AK-74 и без использования диалогов!
 
Все! Теперь после того, как мы появимся у нас в инвентаре будет AK-74 и без использования диалогов!
 
Таким способом можно заспавнить не только калаш, но и другое оружие и патроны.
 
Таким способом можно заспавнить не только калаш, но и другое оружие и патроны.
 +
 +
Если вы хотите, чтобы предмет заспавнился у вас только один раз, при начале новой игры то функцию в файле new_spawn.script нужно переделать таким образом:
 +
<lua>
 +
function give_ak74()
 +
if db.actor:dont_has_info("start_game_spawn") then
 +
alife():create("wpn_ak74", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
 +
db.actor:give_info_portion("start_game_spawn")
 +
end
 +
end
 +
</lua>
 +
 +
Далее нам необходимо зарегистрировать новый инфопоршень, делается это так:
 +
В папке gamedata/config(s)/gameplay/ открываем блокнотом один из файлов, имя которых начинается с '''info_*.xml''', где * это название уровня.
 +
Откроем например файл '''info_l01escape.xml''' и в конец перед тегом '''</game_information_portions>''' добавляем:
 +
'''<info_portion id="start_game_spawn"></info_portion>'''
 +
 
===Авторы===  
 
===Авторы===  
 
* Шатров Дмитрий (Fim@n)
 
* Шатров Дмитрий (Fim@n)
 
+
* Павелин Максим (PriZraK_2018)
 
[[Категория:Скрипты]]
 
[[Категория:Скрипты]]

Текущая версия на 17:30, 28 июня 2015

Спавн обьектов через db.script

Теория

Сегодня я расскажу вам как заспавнить, например, AK-74 в самом начале игры, без использования диалогов! Но, прежде чем учиться запускать функции без использования диалогов - сначала научитесь их вызывать общепринятым методом.

Практика

Для начала нам надо распаковать db.script и там находим функцию:

 
function add_actor( obj )
	actor = obj
	actor_proxy:net_spawn( obj )
	add_obj( obj )
end
 

Изменим эту функцию. У нас должно получиться так:

 
function add_actor( obj )
	actor = obj
	actor_proxy:net_spawn( obj )
	add_obj( obj )
        new_spawn.give_ak74() 
end
 

new_spawn.script - это название скрипта, в котором будет находиться наша функция спавна калаша.

Создаем скрипт new_spawn.script и пишем там функцию:

 
function give_ak74()
    alife():create("wpn_ak74", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 

Все! Теперь после того, как мы появимся у нас в инвентаре будет AK-74 и без использования диалогов! Таким способом можно заспавнить не только калаш, но и другое оружие и патроны.

Если вы хотите, чтобы предмет заспавнился у вас только один раз, при начале новой игры то функцию в файле new_spawn.script нужно переделать таким образом:

 
function give_ak74()
	if db.actor:dont_has_info("start_game_spawn") then
		alife():create("wpn_ak74", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
		db.actor:give_info_portion("start_game_spawn")
	end
end
 

Далее нам необходимо зарегистрировать новый инфопоршень, делается это так: В папке gamedata/config(s)/gameplay/ открываем блокнотом один из файлов, имя которых начинается с info_*.xml, где * это название уровня. Откроем например файл info_l01escape.xml и в конец перед тегом </game_information_portions> добавляем: <info_portion id="start_game_spawn"></info_portion>

Авторы

  • Шатров Дмитрий (Fim@n)
  • Павелин Максим (PriZraK_2018)
Другие места
LANGUAGE