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.