Moderator elections are being held. See Valve Developer Community:Moderator elections for more details.
Users who would like to run for moderator must be autoconfirmed and have at least 100 edits. Users can check their own edit count at Special:Preferences.

Przełączanie Poziomów (Portal 2)

From Valve Developer Community
Jump to: navigation, search
English (en)Deutsch (de)Polski (pl)Русский (ru)
... Icon-Important.png

Co-op

To jest metoda przełączania poziomów w co-op.

Stwórz swoją mapę

Najpierw stwórz mapę co-op. Dodaj do niej func_instance, jako plik VMF ustaw instances/coop/coop_lighting_ents.vmf.

Zmodyfikowany koniec poziomu

Cała logika końca mapy jest w instancji instances/coop/coop_endlevel_room.vmf. Skopiuj ten plik do np. my_coop_endlevel_room.vmf.

W małym pomieszczeniu w tej mapie znajdziesz logic_script nazwany "transition_script". (Możesz go znaleźć używając komendy Find Entities.) Jego skryptem jest debug_scripts/mp_coop_transition_list.nut.

Nie ruszaj tego pliku! Jest to część Portala 2 i nie chcesz jej zepsuć. Zamiast tego zmień skrypt na np. my_coop_script.nut i zapisz mapę.

Wróć do twojej mapy i zmień func_instance na zmodyfikowaną wersję.

Zmodyfikowany skrypt

Teraz idź do scripts/vscripts/debugscripts i stwórz ten skrypt. (Nie dotykaj oryginalnych skryptów.) Wszystko co potrzebujesz to coś takiego:

// Kolejność map
MapPlayOrder<- [
"mp_coop_easiest",
"mp_coop_easiest_two"
]

function TransitionFromMap()
{	
	local nextmap = -2
	
	// Sprawdzanie map
	foreach( index, map in MapPlayOrder )
	{
		if( GetMapName() == MapPlayOrder[index] )
		{
			// To mapa, na której jesteśmy
			nextmap = -1
		}
		else 
		{
			if (nextmap == -1)
			{
				// To następna mapa
				nextmap = index
			}
		}
	}
		
	printl( "nextmap = " + nextmap )
		
	if (nextmap > 0)
	{
		// Znaleziono mapę; zmiana mapy
		EntFire( "@command", "command", "changelevel " + MapPlayOrder[nextmap], 1.0 )
	}
	else
	{
		// Nie znaleziono mapy; powrót do menu
		EntFire( "@command", "command", "disconnect", 2.0 )
	}
}

By iść do lobby po skończeniu map dodaj "mp_coop_lobby_2" na końcu listy (MapPlayOrder).

Single-player

Sposób w single-playerze jest dosyć podobny.

Zmodyfikowany skrypt przełączania

W single-playerze skrypt ten jest w func_instance arrival_departure_transition_ents.vmf w maps/instances/transitions. Załaduj tą mapę w Hammerze i zapisz pod inną nazwą np. my_sp_transition.vmf.

W najmniejszym pokoju jest logic_script nazwany @transition_Script. Jego skryptem jest transitions/sp_transition_list.nut.

Nie modyfikuj tego pliku. Zamiast tego zmień na własny skrypt np. transitions/my_sp_transition_list.nut.

Zapisz swój zmodyfikowany plik VMF.

Zmodyfikowany skrypt

W skrypcie Portala 2 jest mnóstwo rzeczy, które przełączają mapy. To jest minimum które musisz mieć:

Pod Demo Files jest kategoria "Your Title", dodaj w niej swoje mapy.

Efekt powinien wyglądać tak:

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

// ---------------------------------------------------
// 	Your title
// ---------------------------------------------------
"pierwsza_mapa",
"druga_mapa"
]

By po skończeniu gry wyjść do menu dodaj te wiersze:

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

a za nimi:

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

Zapisz plik.