Difference between revisions of "Tworzenie Mapy Co-Op do Portal 2"

From Valve Developer Community
Jump to: navigation, search
(Created page with "{{otherlang2| title=Creating a Portal 2 Coop Map| ru=Creating_a_Portal_2_Coop_Map:ru| de=Creating_a_Portal_2_Coop_Map:de de=Creating_a_Portal_2_Coop_Map }} ==Basic steps== Her...")
 
Line 5: Line 5:
 
de=Creating_a_Portal_2_Coop_Map
 
de=Creating_a_Portal_2_Coop_Map
 
}}
 
}}
==Basic steps==
+
==Podstawowe kroki==
Here are the basic steps needed to create a coop map:
+
Oto podstawowe kroki potrzebne do stworzenia mapy co-op:
  
* Create a [[func_instance]].  Set its VMF file to one of the coop spawn rooms, such as instances/coop/coop_spawn_room.vmf. These VMF files already contain an [[info_player_start]], so don't create another one.
+
* Stwórz [[func_instance]].  Ustaw vmf jako jeden z pokojów startowcyh co-op, takich jak instances/coop/coop_spawn_room.vmf. Wszystkie pliki zawierają [[info_player_start]], więc nie dodawaj nowych.
  
* Create another [[func_instance]], this one set to one of the level end rooms, such as instances/coop/coop_endlevel_room.vmf.   
+
* Stwórz kolejny [[func_instance]], ten ustaw jako jeden z pomieszczeń końcowych, takich jak instances/coop/coop_endlevel_room.vmf.   
  
* Build your map in between these rooms. (You can move them, of course.) The embedded VMF files have an obvious exit which should lead into your map.  You may need to enclose the rooms in order to prevent leaks.
+
* Stwórz mapę pomiędzy nimi.(Możesz je oczywiście przemieszczać.)
  
* Make sure you save the map with the prefix mp_coop_.
+
* Upewnij się, że zapisałeś mape z *prefixem* mp_coop_.
  
That's it! See [[Testing Portal 2 Co-Op Maps Alone]] for how to test the map without a partner.  (To test it ''with'' a partner, both must have the bsp file.  Get into the hub normally, then the host should changelevel to the map.)
+
To wszystko! Zobacz [[Testowanie_Map_Co-Op_Samemu]] aby zobaczyć jak testować mapę samemu.
  
=Co-op Level without spawn Instances=
 
To create a co-op level, you need to use:
 
* a [[logic_auto]]
 
* '''TWO''' [[logic_relay]]s
 
*a [[logic_coop_manager]]
 
* '''TWO''' [[logic_script]]s
 
* '''TWO''' [[prop_indicator_panel]]s
 
* a [[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==
 
1. Go to '''script_return_hub''' properties and do the following:
 
 
::{| class=standard-table
 
!  Property Name || Value
 
|-
 
| Name || script_return_hub
 
|-
 
| Entity Scripts || debug_scripts/mp_coop_transition_list.nut
 
|}
 
 
 
2. Now go to the '''@script_mp_coop_lobby''' properties and do this:
 
 
::{| class=standard-table
 
!  Property Name || Value
 
|-
 
| Name || @script_mp_coop_lobby
 
|-
 
| Entity Scripts || debug_scripts/mp_coop_lobby.nut
 
|}
 
 
3. Continue to the '''panel_level_return_orange''' properties:
 
::{| class=standard-table
 
!  Property Name || Value
 
|-
 
| Name || panel_level_return_orange
 
|-
 
| Time Duration || 3
 
|-
 
| Is a timer? || Yes
 
|-
 
| Indicator lights || tex_level_return_orange
 
|}
 
 
 
{{Warning|The '''panel_return_blue''' has the '''SAME''' properties except of the "Indicator lights" which is "tex_level_return_blue"}}
 
 
4. '''prop_button''' properties:
 
 
::{| class=standard-table
 
!  Property Name || Value
 
|-
 
| Delay Before Reset || 3
 
|}
 
 
==Step 4: Outputs/Inputs==
 
Now we need to connect all these entities together. Follow these instructions:
 
 
*'''logic_auto Outputs'''
 
 
::{| class=standard-table
 
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
 
|-
 
| [[Image:Io11.png]] || OnMapSpawn  || @script_mp_coop_lobby || RunScriptCode || CheckForNewTaunts() || 2.00 || No
 
|-
 
| [[Image:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes
 
|-
 
| [[Image:Io11.png]] || OnMapSpawn  || script_return_hub || RunScriptCode || SetMapBranchAndLevel() || 0.25 || Yes
 
|}
 
{{Note| Don't forget the '''"Delays"''' and the '''"Only Once"'''}}
 
 
 
*'''logic_coop_manager Outputs'''
 
 
::{| class=standard-table
 
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
 
|-
 
| [[Image:Io11.png]] || OnChangeToAllTrue  || relay_return_hub || Trigger || <none> || 0.00 || No
 
|-
 
| [[Image: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
 
|}
 
 
*'''relay_return_hub Outputs'''
 
 
::{| class=standard-table
 
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
 
|-
 
| [[Image:Io11.png]] || OnTrigger  || script_return_hub || RunScriptCode || ReturnToHubFromLevel() || 1.00 || Yes
 
|}
 
 
 
*'''@relay_has_new_taunt Outputs'''
 
 
::{| class=standard-table
 
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
 
|-
 
| [[Image:Io11.png]] || OnTrigger  || brush_new_taunts || Enable || <none> || 0.00 || Yes
 
|}
 
 
 
*'''prop_button Outputs'''
 
 
::{| class=standard-table
 
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
 
|-
 
| [[Image:Io11.png]] || OnButtonReset  || panel_level_return_orange || Stop || <none> || 0.00 || No
 
|-
 
| [[Image:Io11.png]] || OnButtonReset  || coopmanage_return_hub || SetStateBFalse || <none> || 0.00 || No
 
|-
 
| [[Image:Io11.png]] || OnPressed  || panel_level_return_orange || Start || <none> || 0.00 || No
 
|-
 
| [[Image:Io11.png]] || OnPressed  || coopmanage_return_hub || SetStateBTrue || <none> || 0.00 || No
 
|}
 
 
 
 
That's it! You now can create co-op maps with working co-op scripting!
 
 
[[Category:Portal 2 Level Design]]
 
[[Category:Portal 2 Level Design]]

Revision as of 13:36, 22 October 2017

Deutsch Русский

Podstawowe kroki

Oto podstawowe kroki potrzebne do stworzenia mapy co-op:

  • Stwórz func_instance. Ustaw vmf jako jeden z pokojów startowcyh co-op, takich jak instances/coop/coop_spawn_room.vmf. Wszystkie pliki zawierają info_player_start, więc nie dodawaj nowych.
  • Stwórz kolejny func_instance, ten ustaw jako jeden z pomieszczeń końcowych, takich jak instances/coop/coop_endlevel_room.vmf.
  • Stwórz mapę pomiędzy nimi.(Możesz je oczywiście przemieszczać.)
  • Upewnij się, że zapisałeś mape z *prefixem* mp_coop_.

To wszystko! Zobacz Testowanie_Map_Co-Op_Samemu aby zobaczyć jak testować mapę samemu.