Ru/Creating a Portal 2 Coop Map: Difference between revisions
< Ru
		
		
		
		Jump to navigation
		Jump to search
		mNo edit summary  | 
				m (obsolete language category)  | 
				||
| (11 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
{{  | {{lang|title=Создание кооперативной карты|Creating a Portal 2 Coop Map}}  | ||
title=Создание кооперативной карты|  | |||
}}  | |||
=Основные требования=  | |||
Пункты, необходимые для создания кооперативной карты:  | |||
* Создайте   | * Создайте энтити {{L|func_instance}}. В поле "VMF filename" нужно прописать путь к комнате респавна, то есть instances/coop/coop_spawn_room.vmf. В этом VMF файле уже есть {{L|info_player_start}}, и значит создавать эту энтити самому не нужно.  | ||
* Стройте   | * Создайте другой {{L|func_instance}}, укажите в нём путь к комнате конца уровня, instances/coop/coop_endlevel_room.vmf.  | ||
* Стройте карту между этими двумя комнатами. (Конечно, их можно перемещать.) Возможно вам придётся поместить всю карту в комнату (можно чёрную, или скайбокс), чтобы избежать утечек (дыр в картах).  | |||
* Сохраните свою карту с обязательным префиксом mp_coop_.  | * Сохраните свою карту с обязательным префиксом mp_coop_.  | ||
Вот и всё!   | Вот и всё! См. статью {{L|Testing Portal 2 Co-Op Maps Alone|как протестировать кооперативную карту в одиночку}}, если у вас нет напарника.  (Чтобы протестировать карту с напарником, вы должны дать ему карту в формате .bsp. Войдите с напарником в распределитель и, если вы являетесь сервером, воспользуйтесь командой changelevel для смены карты.)  | ||
=Кооперативный уровень без экземпляров   | =Кооперативный уровень без экземпляров сборочных аппаратов=  | ||
Для создания кооперативного уровня   | ==Шаг 1==  | ||
*   | Для создания кооперативного уровня используются:  | ||
* '''  | * энтити {{L|logic_auto}}  | ||
*  | * '''ДВЕ''' {{L|logic_relay}}  | ||
* '''  | * энтити {{L|logic_coop_manager}}  | ||
* '''  | * '''ДВЕ''' {{L|logic_script}}  | ||
* '''ДВЕ''' {{L|prop_indicator_panel}}  | |||
* {{L|prop_button}}  | |||
{{  | |||
*   | |||
{{  | |||
==  | {{Note| Обязательно '''скройте''' {{L|prop_indicator_panel}} и {{L|prop_button}}, чтобы игрок их не видел.}}  | ||
==Шаг 2==  | |||
* Назовите первую {{L|logic_relay}} '''relay_return_hub'''  | |||
* Назовите вторую {{L|logic_relay}} '''@relay_has_new_taunt'''  | |||
* Назовите {{L|logic_coop_manager}} '''coopmanage_return_hub'''  | |||
* Назовите первую {{L|logic_script}} '''script_return_hub'''  | |||
* Назовите вторую {{L|logic_script}} '''@script_mp_coop_lobby'''  | |||
* Назовите первую {{L|prop_indicator_panel}} '''panel_level_return_orange'''  | |||
* Назовите вторую {{L|prop_indicator_panel}} '''panel_level_return_blue'''  | |||
{{Note| {{L|prop_button}} называть не требуется.}}  | |||
==Шаг 3: свойства==  | |||
1. В свойствах '''script_return_hub''':  | |||
::{| class=standard-table  | ::{| class=standard-table  | ||
!    | !  Имя свойства || Значение  | ||
|-  | |-  | ||
| Name || script_return_hub  | | Name || script_return_hub  | ||
| Line 46: | Line 44: | ||
|}  | |}  | ||
2. Далее в свойствах '''@script_mp_coop_lobby''' сделайте следующее:  | |||
2.   | |||
::{| class=standard-table  | ::{| class=standard-table  | ||
!    | !  Имя свойства || Значение  | ||
|-  | |-  | ||
| Name || @script_mp_coop_lobby  | | Name || @script_mp_coop_lobby  | ||
| Line 57: | Line 53: | ||
|}  | |}  | ||
3.   | 3. Затем в свойствах '''panel_level_return_orange''':  | ||
::{| class=standard-table  | ::{| class=standard-table  | ||
!    | !  Имя свойства || Значение  | ||
|-  | |-  | ||
| Name || panel_level_return_orange  | | Name || panel_level_return_orange  | ||
| Line 70: | Line 66: | ||
|}  | |}  | ||
{{warning|'''panel_return_blue''' имеет '''те же самые''' свойства, но в "Indicator lights" задано "tex_level_return_blue"}}  | |||
4. Свойства '''prop_button''':  | |||
4. '''prop_button'''   | |||
::{| class=standard-table  | ::{| class=standard-table  | ||
!    | !  Имя свойства || Значение  | ||
|-  | |-  | ||
| Delay Before Reset || 3  | | Delay Before Reset || 3  | ||
|}  | |}  | ||
==  | ==Шаг 4: выходы и входы (Outputs/Inputs)==  | ||
Теперь нужно соединить энтити друг с другом. См. инструкции:  | |||
*'''Выходы logic_auto'''  | |||
::{| class=standard-table  | ::{| class=standard-table  | ||
!   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | !   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnMapSpawn  || @script_mp_coop_lobby || RunScriptCode || CheckForNewTaunts() || 2.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || SetMapBranchAndLevel() || 0.25 || Yes  | ||
|}  | |}  | ||
{{Note|   | {{Note|Не забывайте про параметры '''"Delay"''' и '''"Only Once"'''}}  | ||
*'''logic_coop_manager   | *'''Выходы logic_coop_manager'''  | ||
::{| class=standard-table  | ::{| class=standard-table  | ||
!   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | !   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnChangeToAllTrue  || relay_return_hub || Trigger || <none> || 0.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnChangeToAllTrue  || panel_level_return_orange || Check || <none> || 0.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnChangeToAllTrue  || panel_level_return_blue || Check || <none> || 0.00 || No  | ||
|}  | |}  | ||
*'''relay_return_hub   | *'''Выходы relay_return_hub'''  | ||
::{| class=standard-table  | ::{| class=standard-table  | ||
!   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | !   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnTrigger  || script_return_hub || RunScriptCode || ReturnToHubFromLevel() || 1.00 || Yes  | ||
|}  | |}  | ||
*'''@relay_has_new_taunt   | *'''Выходы @relay_has_new_taunt'''  | ||
::{| class=standard-table  | ::{| class=standard-table  | ||
!   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | !   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnTrigger  || brush_new_taunts || Enable || <none> || 0.00 || Yes  | ||
|}  | |}  | ||
*'''prop_button   | *'''Выходы prop_button'''  | ||
::{| class=standard-table  | ::{| class=standard-table  | ||
!   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | !   || My Output || Target Entity || Target Input || Parameter || Delay || Only Once  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnButtonReset  || panel_level_return_orange || Stop || <none> || 0.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnButtonReset  || coopmanage_return_hub || SetStateBFalse || <none> || 0.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnPressed  || panel_level_return_orange || Start || <none> || 0.00 || No  | ||
|-  | |-  | ||
| [[  | | [[File:Io11.png]] || OnPressed  || coopmanage_return_hub || SetStateBTrue || <none> || 0.00 || No  | ||
|}  | |}  | ||
Всё! Теперь вы можете создавать кооперативные карты с рабочими кооперативными скриптами!  | |||
{{ACategory|Portal 2 Level Design}}  | |||
Latest revision as of 02:43, 22 August 2024
Основные требования
Пункты, необходимые для создания кооперативной карты:
- Создайте энтити func_instance. В поле "VMF filename" нужно прописать путь к комнате респавна, то есть instances/coop/coop_spawn_room.vmf. В этом VMF файле уже есть info_player_start, и значит создавать эту энтити самому не нужно.
 
- Создайте другой func_instance, укажите в нём путь к комнате конца уровня, instances/coop/coop_endlevel_room.vmf.
 
- Стройте карту между этими двумя комнатами. (Конечно, их можно перемещать.) Возможно вам придётся поместить всю карту в комнату (можно чёрную, или скайбокс), чтобы избежать утечек (дыр в картах).
 
- Сохраните свою карту с обязательным префиксом mp_coop_.
 
Вот и всё! См. статью как протестировать кооперативную карту в одиночку, если у вас нет напарника. (Чтобы протестировать карту с напарником, вы должны дать ему карту в формате .bsp. Войдите с напарником в распределитель и, если вы являетесь сервером, воспользуйтесь командой changelevel для смены карты.)
Кооперативный уровень без экземпляров сборочных аппаратов
Шаг 1
Для создания кооперативного уровня используются:
- энтити logic_auto
 - ДВЕ logic_relay
 - энтити logic_coop_manager
 - ДВЕ logic_script
 - ДВЕ prop_indicator_panel
 - prop_button
 
Шаг 2
- Назовите первую logic_relay relay_return_hub
 - Назовите вторую logic_relay @relay_has_new_taunt
 - Назовите logic_coop_manager coopmanage_return_hub
 - Назовите первую logic_script script_return_hub
 - Назовите вторую logic_script @script_mp_coop_lobby
 - Назовите первую prop_indicator_panel panel_level_return_orange
 - Назовите вторую prop_indicator_panel panel_level_return_blue
 
Шаг 3: свойства
1. В свойствах script_return_hub:
Имя свойства Значение Name script_return_hub Entity Scripts debug_scripts/mp_coop_transition_list.nut 
2. Далее в свойствах @script_mp_coop_lobby сделайте следующее:
Имя свойства Значение Name @script_mp_coop_lobby Entity Scripts debug_scripts/mp_coop_lobby.nut 
3. Затем в свойствах panel_level_return_orange:
Имя свойства Значение Name panel_level_return_orange Time Duration 3 Is a timer? Yes Indicator lights tex_level_return_orange 
4. Свойства prop_button:
Имя свойства Значение Delay Before Reset 3 
Шаг 4: выходы и входы (Outputs/Inputs)
Теперь нужно соединить энтити друг с другом. См. инструкции:
- Выходы logic_auto
 
- Выходы logic_coop_manager
 
- Выходы relay_return_hub
 
- Выходы @relay_has_new_taunt
 
- Выходы prop_button
 
Всё! Теперь вы можете создавать кооперативные карты с рабочими кооперативными скриптами!