Ru/Level Transition (Portal 2): Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
mNo edit summary
m (obsolete language category)
 
(3 intermediate revisions by the same user not shown)
Line 5: Line 5:


==Создание карты==
==Создание карты==
Во-первых, [[Creating a Portal 2 Coop Map:ru|создайте кооперативную карту]].  Добавьте экземпляр [[func_instance]], задав его файл VMF на instances/coop/coop_lighting_ents.vmf.  (All we're using is the [[point_servercommand]] inside.)
Во-первых, {{L|Creating a Portal 2 Coop Map|создайте кооперативную карту}}.  Добавьте экземпляр {{L|func_instance}}, задав его файл VMF на instances/coop/coop_lighting_ents.vmf.  (All we're using is the {{L|point_servercommand}} inside.)


==Изменение Endlevel==
==Изменение Endlevel==
Логика конца карты находится в экземпляре instances/coop/coop_endlevel_room.vmf.  Загрузите эту карту в Hammer и '''сохраните ее как копию'''-- например, my_coop_endlevel_room.vmf.   
Логика конца карты находится в экземпляре instances/coop/coop_endlevel_room.vmf.  Загрузите эту карту в Hammer и '''сохраните ее как копию'''-- например, my_coop_endlevel_room.vmf.   


В маленькой комнатке в этой карте есть [[logic_script]] под именем transition_script.  (Для его выбора можете воспользоваться командой поиска энтити (Find Entities).)  Его свойству Entity Scripts задано значение debug_scripts/mp_coop_transition_list.nut.
В маленькой комнатке в этой карте есть {{L|logic_script}} под именем transition_script.  (Для его выбора можете воспользоваться командой поиска энтити (Find Entities).)  Его свойству Entity Scripts задано значение debug_scripts/mp_coop_transition_list.nut.


'''Не изменяйте этот файл!'''  Это часть Portal 2, и трогать его не следует.  Вместо этого в свойстве Entity Scripts укажите свой собственный скрипт-- например, debug_scripts/my_mp_coop_transition_list.nut.  Затем сохраните карту.
'''Не изменяйте этот файл!'''  Это часть Portal 2, и трогать его не следует.  Вместо этого в свойстве Entity Scripts укажите свой собственный скрипт-- например, debug_scripts/my_mp_coop_transition_list.nut.  Затем сохраните карту.
Line 70: Line 70:
Создайте еще несколько кооперативных карт с использованием своей измененной комнаты конца уровня вместо стандартной.  Скомпилируйте все карты.
Создайте еще несколько кооперативных карт с использованием своей измененной комнаты конца уровня вместо стандартной.  Скомпилируйте все карты.


Теперь вы можете [[Testing Portal 2 Co-Op Maps Alone:ru|проверить свои карты]].  Просто загрузите первую карту и сыграйте в нее.  По достижении её конца Portal 2 переключится на следующую карту.  А в конце последней карты произойдет выход в главное меню.
Теперь вы можете {{L|Testing Portal 2 Co-Op Maps Alone|проверить свои карты}}.  Просто загрузите первую карту и сыграйте в нее.  По достижении её конца Portal 2 переключится на следующую карту.  А в конце последней карты произойдет выход в главное меню.


(Также можно добавить Распределитель как в игре.  См. mp_coop_transition_list.nut.)
(Также можно добавить Распределитель как в игре.  См. mp_coop_transition_list.nut.)
Line 78: Line 78:


==Изменение переходного уровня==
==Изменение переходного уровня==
Логика конца карты  в одиночном режиме находится в экземпляре ([[func_instance]]) arrival_departure_transition_ents.vmf в папке maps/instances/transitions.  Загрузите эту карту в Hammer и '''сохраните под другим именем''', например my_arrival_departure_transition_ents.vmf.
Логика конца карты  в одиночном режиме находится в экземпляре ({{L|func_instance}}) arrival_departure_transition_ents.vmf в папке maps/instances/transitions.  Загрузите эту карту в Hammer и '''сохраните под другим именем''', например my_arrival_departure_transition_ents.vmf.


В этом экземпляре в самой маленькой комнате находится логический скрипт ([[logic_script]]) под именем @transition_Script.  Его свойство Script Entity указывает на transitions/sp_transition_list.nut.
В этом экземпляре в самой маленькой комнате находится логический скрипт ({{L|logic_script}}) под именем @transition_Script.  Его свойство Script Entity указывает на transitions/sp_transition_list.nut.


'''Не изменяйте этот файл'''.  Вместо этого укажите свой собственный скрипт, например transitions/my_sp_transition_list.nut.   
'''Не изменяйте этот файл'''.  Вместо этого укажите свой собственный скрипт, например transitions/my_sp_transition_list.nut.   


По желанию здесь же вы можете изменить [[game_text]] под именем @end_of_playtest_text, отображающий строку текста после последней карты.  Просто измените свойство Message Text.
По желанию здесь же вы можете изменить {{L|game_text}} под именем @end_of_playtest_text, отображающий строку текста после последней карты.  Просто измените свойство Message Text.


Сохраните измененный файл VMF.
Сохраните измененный файл VMF.
Line 128: Line 128:
Создайте и скомпилируйте остальные карты.  Загрузите и запустите в Hammer первую карту; Portal 2 загрузится с первой картой.  По достижении её конца Portal 2 переключится на следующую карту. А в конце последней карты произойдет выход в главное меню.
Создайте и скомпилируйте остальные карты.  Загрузите и запустите в Hammer первую карту; Portal 2 загрузится с первой картой.  По достижении её конца Portal 2 переключится на следующую карту. А в конце последней карты произойдет выход в главное меню.


[[Category:Portal 2 Level Design:ru]]
{{ACategory|Portal 2 Level Design}}
[[Category:Portal 2 Tutorials:ru]]
{{ACategory|Portal 2 Tutorials}}

Latest revision as of 03:51, 22 August 2024

English (en)Deutsch (de)Polski (pl)Русский (ru)中文 (zh)Translate (Translate)

Кооперативный режим

Здесь описано создание последовательности тестовых камер для кооперативного режима.

Создание карты

Во-первых, создайте кооперативную карту(en). Добавьте экземпляр func_instance(en), задав его файл VMF на instances/coop/coop_lighting_ents.vmf. (All we're using is the point_servercommand(en) inside.)

Изменение Endlevel

Логика конца карты находится в экземпляре instances/coop/coop_endlevel_room.vmf. Загрузите эту карту в Hammer и сохраните ее как копию-- например, my_coop_endlevel_room.vmf.

В маленькой комнатке в этой карте есть logic_script(en) под именем transition_script. (Для его выбора можете воспользоваться командой поиска энтити (Find Entities).) Его свойству Entity Scripts задано значение debug_scripts/mp_coop_transition_list.nut.

Не изменяйте этот файл! Это часть Portal 2, и трогать его не следует. Вместо этого в свойстве Entity Scripts укажите свой собственный скрипт-- например, debug_scripts/my_mp_coop_transition_list.nut. Затем сохраните карту.

Вернитесь в свой кооперативный уровень, выберите func_instance, содержащий комнату конца уровня, и отредактируйте его файл VMF, чтобы он ссылался на измененный вами файл.

Изменение скрипта

Теперь перейдите в scripts/vscripts/debugscripts в папке установки Portal 2 и создайте этот скрипт. (Не трогайте скрипт Valve.) Вам потребуется что-то вроде этого:

// Порядок карт
MapPlayOrder<- [
"mp_coop_easiest",
"mp_coop_easiest_two"
]

function TransitionFromMap()
{	
	local nextmap = -2
	
	// Прокручивание карт
	foreach( index, map in MapPlayOrder )
	{
		if( GetMapName() == MapPlayOrder[index] )
		{
			// Это карта, в которой мы сейчас находимся
			nextmap = -1
		}
		else 
		{
			if (nextmap == -1)
			{
				// Первая карта, идущая после этой
				nextmap = index
			}
		}
	}
		
	printl( "nextmap = " + nextmap )
		
	if (nextmap > 0)
	{
		// Найдена карта; переходим к ней
		EntFire( "@command", "command", "changelevel " + MapPlayOrder[nextmap], 1.0 )
	}
	else
	{
		// Карта не найдена; больше ничего нет, заврешение
		EntFire( "@command", "command", "disconnect", 2.0 )
	}
}

Верхний массив, MapPlayOrder, это список ваших карт по порядку. (Тем, кто не знаком с Squirrel, следует иметь в виду, что каждая карта заключается в кавычки, между картами должны стоять запятые. То есть после последней карты запятая не ставится. И не забудьте поставить закрывающую скобку!)

Чтобы после прохождения карт возвращаться в распределитель, добавьте "mp_coop_lobby_2" как последнюю карту в списке (MapPlayOrder).

Проверка

Создайте еще несколько кооперативных карт с использованием своей измененной комнаты конца уровня вместо стандартной. Скомпилируйте все карты.

Теперь вы можете проверить свои карты(en). Просто загрузите первую карту и сыграйте в нее. По достижении её конца Portal 2 переключится на следующую карту. А в конце последней карты произойдет выход в главное меню.

(Также можно добавить Распределитель как в игре. См. mp_coop_transition_list.nut.)

Одиночный режим

В одиночном режиме все примерно так же.

Изменение переходного уровня

Логика конца карты в одиночном режиме находится в экземпляре (func_instance(en)) arrival_departure_transition_ents.vmf в папке maps/instances/transitions. Загрузите эту карту в Hammer и сохраните под другим именем, например my_arrival_departure_transition_ents.vmf.

В этом экземпляре в самой маленькой комнате находится логический скрипт (logic_script(en)) под именем @transition_Script. Его свойство Script Entity указывает на transitions/sp_transition_list.nut.

Не изменяйте этот файл. Вместо этого укажите свой собственный скрипт, например transitions/my_sp_transition_list.nut.

По желанию здесь же вы можете изменить game_text(en) под именем @end_of_playtest_text, отображающий строку текста после последней карты. Просто измените свойство Message Text.

Сохраните измененный файл VMF.

Изменение скрипта

Внутри скрипта описано множество других действий, и несомненно проще было бы создать описание простой серии карт. Здесь приведен необходимый минимум.

В списке найдите карту "demo_paint", последнюю карту в файле. Добавьте свои карты после неё. (Имена карт берутся в кавычки, между ними ставится запятая, но после последней карты запятая не ставится. Не забудьте закрывающую скобку.)

Результат должен выглядеть примерно так:

// ---------------------------------------------------
// 	Demo files
// ---------------------------------------------------
"demo_intro",
"demo_underground",
"demo_paint",

// ---------------------------------------------------
// 	Ваше название
// ---------------------------------------------------
"your_first_level",
"your_second_level"
]

Логика смены карт находится в TransitionFromMap. Чтобы в Portal 2 после отображения завершающего текста вышло главное меню, найдите следующие строки

		EntFire( "end_of_playtest_text", "display", 0 )
		EntFire( "@end_of_playtest_text", "display", 0 )

и добавьте эту строку после них:

		EntFire( "@command", "Command", "disconnect", 2.0 )

Сохраните файл (изменённую копию файла .nut - не заменяйте исходный файл Valve!)

Проверка

Создайте и скомпилируйте остальные карты. Загрузите и запустите в Hammer первую карту; Portal 2 загрузится с первой картой. По достижении её конца Portal 2 переключится на следующую карту. А в конце последней карты произойдет выход в главное меню.