Подключение другого *.spawn

Материал из MODFAQ.RU — моддинг игр серии S.T.A.L.K.E.R., The Elder Scrolls и Fallout
Перейти к: навигация, поиск

Подключение другого *.spawn

Автор FantomICW
Дополнил Wookie
Тип статьи справка
Актуальность ТЧ, ЧН, ЗП
Необходимый софт Текстовый редактор
Необходимые файлы 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. Сохраните измененный скрипт. Тестируйте.

Источники