Как подключить к игре другой *.spawn

Материал из Modders-wiki - Библиотека знаний модмейкеров S.T.A.L.K.E.R.
Перейти к: навигация, поиск
Unpack.pngТребуется распакованная gamedata
Перед тем, как приступить, предварительно распакуйте игровые архивы.
Без наличия оригинальных файлов, внести в них изменения не получится!


Как подключить к игре другой *.spawn
Описание
АвторWookie
СоавторFantomICW
Тип статьисправка
АктуальностьТЧ, ЧН, ЗП
Необходимый софтТекстовый редактор
Необходимые файлыui_main_menu.script

В этой статье вы узнаете, как подключить к игре другой файл *.spawn, без замены стандартного all.spawn[1].

Вступление

Как известно, большинство данных игрового спавна всех игровых локаций синглплеера хранятся в файле gamedata/spawns/all.spawn. Однако, довольно часто бывает так, что модмейкеры собирают спавн отдельных локаций для отладки. Обычно в этом случае оригинальный all.spawn переименовывается во что-то другое, а файл имя_уровня.spawn, в свою очередь, переименовывается в all.spawn.

Попробуйте иной, более удобный способ: правка скрипта, который подключает файл *.spawn к игре.

Теория

gamedata/scripts/ui_main_menu.script - именно тот файл, в котором спавн привязывается к игре. Правильнее будет сказать, что в ui_main_menu.script игра запускает синглплеер с указанным в функции файлом *.spawn.

Исправьте функцию под свой файл.

Практика

Предположим, что вы хотите опробовать новый *.spawn уровня "Затон".
1. Скопируйте в gamedata/spawns свой файл *.spawn (zaton.spawn).
2. Откройте ui_main_menu.script, найдите там функцию main_menu:StartGame(), которая запускает новую игру после нажатия на соответствующую кнопку в главном меню и выбора уровня сложности:

function main_menu:StartGame()
	local console = get_console()

	if (alife() ~= nil) then
		console:execute	("disconnect")
	end
	device():pause(false)
	console:execute("start server(all/single/alife/new) client(localhost)")
	console:execute("main_menu off")
end

В данном случае это следующая строка:

console:execute("start server(all/single/alife/new) client(localhost)")

all - название файла спавна без расширения (*.spawn).
3. Теперь пропишите в функцию свой файл, заменив all на zaton:

console:execute("start server(zaton/single/alife/new) client(localhost)")

В целом функция будет выглядеть так:

function main_menu:StartGame()
	local console = get_console()

	if (alife() ~= nil) then
		console:execute	("disconnect")
	end
	device():pause(false)
	console:execute("start server(zaton/single/alife/new) client(localhost)")
	console:execute("main_menu off")
end

4. Сохраните измененный скрипт. Тестируйте.

Источники

  1. Тема на форуме AP Production