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

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (obsolete language category)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|title=Переходы между уровнями|Level Transition (Portal 2)}}
|title=Переходы между уровнями
|de=Level Transition (Portal 2):de
|en=Level Transition (Portal 2)
}}


=Кооперативный режим=
=Кооперативный режим=
Line 9: 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 74: 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 82: 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 95: Line 91:
Внутри скрипта описано множество других действий, и несомненно проще было бы создать описание простой серии карт. Здесь приведен необходимый минимум.
Внутри скрипта описано множество других действий, и несомненно проще было бы создать описание простой серии карт. Здесь приведен необходимый минимум.


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


Результат должен выглядеть примерно так:
Результат должен выглядеть примерно так:
Line 115: Line 111:
</source>
</source>


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


<source lang="text">
<source lang="text">
Line 127: Line 123:
</source>
</source>


Сохраните файл  (изменённую копию файла .nut file - не заменяйте исходный файл Valve!)
Сохраните файл  (изменённую копию файла .nut - не заменяйте исходный файл Valve!)
 
==Компиляция и проверка==
Make and compile the additional maps.  You can now go back to your first map and run it from Hammer; Portal 2 will load and put you into your first map.  When you get to the end it'll run the next map from the script, and exit to the main menu when all are done.


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


[[Category:Portal 2 Tutorials:ru]]
{{ACategory|Portal 2 Level Design}}
{{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 переключится на следующую карту. А в конце последней карты произойдет выход в главное меню.