Ru/Creating a Portal 2 Coop Map: Difference between revisions

From Valve Developer Community
< 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:
{{otherlang2|
{{lang|title=Создание кооперативной карты|Creating a Portal 2 Coop Map}}
title=Создание кооперативной карты|
en=Creating_a_Portal_2_Coop_Map|
de=Creating_a_Portal_2_Coop_Map:de
}}
Это основные этапы, необходимые для создания кооперативной карты:


* Создайте энтити [[func_instance]]. В поле "VMF filename" нужно прописать путь к комнате респавна, то есть instances/coop/coop_spawn_room.vmf. В этом VMF файле уже есть [[info_player_start]], и значит вводить самому не нужно.
=Основные требования=
Пункты, необходимые для создания кооперативной карты:


* Создайте другой [[func_instance]], укажите в нём путь к комнате конца, instances/coop/coop_endlevel_room.vmf.
* Создайте энтити {{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_.


Вот и всё! Посмотрите [[Testing Portal 2 Co-Op Maps Alone:ru|Как протестировать кооп карту в одиночку]], если у вас нету напарника.  (Чтобы протестировать карту с напарником, вы должны дать ему карту в формате .bsp, и если вы являетесь сервером, то воспользуйтесь командой changelevel для смены карты.)
Вот и всё! См. статью {{L|Testing Portal 2 Co-Op Maps Alone|как протестировать кооперативную карту в одиночку}}, если у вас нет напарника.  (Чтобы протестировать карту с напарником, вы должны дать ему карту в формате .bsp. Войдите с напарником в распределитель и, если вы являетесь сервером, воспользуйтесь командой changelevel для смены карты.)
=Кооперативный уровень без экземпляров спавнеров=
=Кооперативный уровень без экземпляров сборочных аппаратов=
Для создания кооперативного уровня нужно использовать:
==Шаг 1==
* a [[logic_auto]]
Для создания кооперативного уровня используются:
* '''TWO''' [[logic_relay]]s
* энтити {{L|logic_auto}}
*a [[logic_coop_manager]]
* '''ДВЕ''' {{L|logic_relay}}
* '''TWO''' [[logic_script]]s
* энтити {{L|logic_coop_manager}}
* '''TWO''' [[prop_indicator_panel]]s
* '''ДВЕ''' {{L|logic_script}}
* a [[prop_button]]
* '''ДВЕ''' {{L|prop_indicator_panel}}
 
* {{L|prop_button}}
{{Note| You must '''HIDE''' the [[prop_indicator_panel]] and the [[prop_button]] so the player's won't see it in the level}}
== Step 2==
* Name your first [[logic_relay]] '''relay_return_hub'''
* Name your second [[logic_relay]] '''@relay_has_new_taunt'''
* Name your [[logic_coop_manager]] '''coopmanage_return_hub'''
* Name your first [[logic_script]] '''script_return_hub'''
* Name your second [[logic_script]] '''@script_mp_coop_lobby'''
* Name your first [[prop_indicator_panel]] '''panel_level_return_orange'''
* Name your first [[prop_indicator_panel]] '''panel_level_return_blue'''
{{Note| The [[prop_button]] doesn't need a name}}


==Step 3: Properties==
{{Note| Обязательно '''скройте''' {{L|prop_indicator_panel}} и {{L|prop_button}}, чтобы игрок их не видел.}}
1. Go to '''script_return_hub''' properties and do the following:
==Шаг 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
Property Name || Value
Имя свойства || Значение
|-
|-
| Name || script_return_hub
| Name || script_return_hub
Line 46: Line 44:
|}
|}


 
2. Далее в свойствах '''@script_mp_coop_lobby''' сделайте следующее:
2. Now go to the '''@script_mp_coop_lobby''' properties and do this:
 
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Имя свойства || Значение
|-
|-
| Name || @script_mp_coop_lobby
| Name || @script_mp_coop_lobby
Line 57: Line 53:
|}
|}


3. Continue to the '''panel_level_return_orange''' properties:
3. Затем в свойствах '''panel_level_return_orange''':
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Имя свойства || Значение
|-
|-
| Name || panel_level_return_orange
| Name || panel_level_return_orange
Line 70: Line 66:
|}
|}


{{warning|'''panel_return_blue''' имеет '''те же самые''' свойства, но в "Indicator lights" задано "tex_level_return_blue"}}


{{Warning|The '''panel_return_blue''' has the '''SAME''' properties except of the "Indicator lights" which is "tex_level_return_blue"}}
4. Свойства '''prop_button''':
 
4. '''prop_button''' properties:
 
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Имя свойства || Значение
|-
|-
| Delay Before Reset || 3
| Delay Before Reset || 3
|}
|}


==Step 4: Outputs/Inputs==
==Шаг 4: выходы и входы (Outputs/Inputs)==
Now we need to connect all these entities together. Follow these instructions:
Теперь нужно соединить энтити друг с другом. См. инструкции:
 
*'''logic_auto Outputs'''


*'''Выходы 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
|-
|-
| [[Image:Io11.png]] || OnMapSpawn  || @script_mp_coop_lobby || RunScriptCode || CheckForNewTaunts() || 2.00 || No
| [[File:Io11.png]] || OnMapSpawn  || @script_mp_coop_lobby || RunScriptCode || CheckForNewTaunts() || 2.00 || No
|-
|-
| [[Image:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes
| [[File:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes
|-
|-
| [[Image:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || SetMapBranchAndLevel() || 0.25 || Yes
| [[File:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || SetMapBranchAndLevel() || 0.25 || Yes
|}
|}
{{Note| Don't forget the '''"Delays"''' and the '''"Only Once"'''}}
{{Note|Не забывайте про параметры '''"Delay"''' и '''"Only Once"'''}}




*'''logic_coop_manager Outputs'''
*'''Выходы 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
|-
|-
| [[Image:Io11.png]] || OnChangeToAllTrue  || relay_return_hub || Trigger || <none> || 0.00 || No
| [[File:Io11.png]] || OnChangeToAllTrue  || relay_return_hub || Trigger || <none> || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnChangeToAllTrue  || panel_level_return_orange || Check || <none> || 0.00 || No
| [[File:Io11.png]] || OnChangeToAllTrue  || panel_level_return_orange || Check || <none> || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnChangeToAllTrue  || panel_level_return_blue || Check || <none> || 0.00 || No
| [[File:Io11.png]] || OnChangeToAllTrue  || panel_level_return_blue || Check || <none> || 0.00 || No
|}
|}


*'''relay_return_hub Outputs'''
*'''Выходы 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
|-
|-
| [[Image:Io11.png]] || OnTrigger  || script_return_hub || RunScriptCode || ReturnToHubFromLevel() || 1.00 || Yes
| [[File:Io11.png]] || OnTrigger  || script_return_hub || RunScriptCode || ReturnToHubFromLevel() || 1.00 || Yes
|}
|}




*'''@relay_has_new_taunt Outputs'''
*'''Выходы @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
|-
|-
| [[Image:Io11.png]] || OnTrigger  || brush_new_taunts || Enable || <none> || 0.00 || Yes
| [[File:Io11.png]] || OnTrigger  || brush_new_taunts || Enable || <none> || 0.00 || Yes
|}
|}




*'''prop_button Outputs'''
*'''Выходы 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
|-
|-
| [[Image:Io11.png]] || OnButtonReset  || panel_level_return_orange || Stop || <none> || 0.00 || No
| [[File:Io11.png]] || OnButtonReset  || panel_level_return_orange || Stop || <none> || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnButtonReset  || coopmanage_return_hub || SetStateBFalse || <none> || 0.00 || No
| [[File:Io11.png]] || OnButtonReset  || coopmanage_return_hub || SetStateBFalse || <none> || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnPressed  || panel_level_return_orange || Start || <none> || 0.00 || No
| [[File:Io11.png]] || OnPressed  || panel_level_return_orange || Start || <none> || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnPressed  || coopmanage_return_hub || SetStateBTrue || <none> || 0.00 || No
| [[File:Io11.png]] || OnPressed  || coopmanage_return_hub || SetStateBTrue || <none> || 0.00 || No
|}
|}


Всё! Теперь вы можете создавать кооперативные карты с рабочими кооперативными скриптами!


 
{{ACategory|Portal 2 Level Design}}
That's it! You now can create co-op maps with working co-op scripting!
 
[[Category:Portal 2 Level Design:ru]]

Latest revision as of 03:43, 22 August 2024

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

Основные требования

Пункты, необходимые для создания кооперативной карты:

  • Создайте энтити func_instance(en). В поле "VMF filename" нужно прописать путь к комнате респавна, то есть instances/coop/coop_spawn_room.vmf. В этом VMF файле уже есть info_player_start(en), и значит создавать эту энтити самому не нужно.
  • Создайте другой func_instance(en), укажите в нём путь к комнате конца уровня, instances/coop/coop_endlevel_room.vmf.
  • Стройте карту между этими двумя комнатами. (Конечно, их можно перемещать.) Возможно вам придётся поместить всю карту в комнату (можно чёрную, или скайбокс), чтобы избежать утечек (дыр в картах).
  • Сохраните свою карту с обязательным префиксом mp_coop_.

Вот и всё! См. статью как протестировать кооперативную карту в одиночку(en), если у вас нет напарника. (Чтобы протестировать карту с напарником, вы должны дать ему карту в формате .bsp. Войдите с напарником в распределитель и, если вы являетесь сервером, воспользуйтесь командой changelevel для смены карты.)

Кооперативный уровень без экземпляров сборочных аппаратов

Шаг 1

Для создания кооперативного уровня используются:

Note.pngПримечание: Обязательно скройте prop_indicator_panel(en) и prop_button(en), чтобы игрок их не видел.

Шаг 2

Note.pngПримечание: prop_button(en) называть не требуется.

Шаг 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
Warning.pngПредупреждение:panel_return_blue имеет те же самые свойства, но в "Indicator lights" задано "tex_level_return_blue"

4. Свойства prop_button:

Имя свойства Значение
Delay Before Reset 3

Шаг 4: выходы и входы (Outputs/Inputs)

Теперь нужно соединить энтити друг с другом. См. инструкции:

  • Выходы logic_auto
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn @script_mp_coop_lobby RunScriptCode CheckForNewTaunts() 2.00 No
Io11.png OnMapSpawn script_return_hub RunScriptCode MapPostLoaded() 2.00 Yes
Io11.png OnMapSpawn script_return_hub RunScriptCode SetMapBranchAndLevel() 0.25 Yes
Note.pngПримечание:Не забывайте про параметры "Delay" и "Only Once"


  • Выходы logic_coop_manager
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnChangeToAllTrue relay_return_hub Trigger <none> 0.00 No
Io11.png OnChangeToAllTrue panel_level_return_orange Check <none> 0.00 No
Io11.png OnChangeToAllTrue panel_level_return_blue Check <none> 0.00 No
  • Выходы relay_return_hub
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger script_return_hub RunScriptCode ReturnToHubFromLevel() 1.00 Yes


  • Выходы @relay_has_new_taunt
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger brush_new_taunts Enable <none> 0.00 Yes


  • Выходы prop_button
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnButtonReset panel_level_return_orange Stop <none> 0.00 No
Io11.png OnButtonReset coopmanage_return_hub SetStateBFalse <none> 0.00 No
Io11.png OnPressed panel_level_return_orange Start <none> 0.00 No
Io11.png OnPressed coopmanage_return_hub SetStateBTrue <none> 0.00 No

Всё! Теперь вы можете создавать кооперативные карты с рабочими кооперативными скриптами!