Gdy gracz dołącza do toczącej się gry, nie chcesz, aby musiał czekać w charakterze obserwatora, aż rozpocznie się nowa runda. Najlepiej, jeśli nowy gracz będzie mógł rozpocząć grę natychmiast po zespawnowaniu. Aby skonfigurować takie zachowanie, musisz dodać nowego gracza do mapy TeamMap
, zasubskrybować zdarzenie likwidacji i przyznać graczowi pierwszą broń.
Aby przyznać graczowi bronie i zasubskrybować jego zdarzenia, gdy dołącza do toczącej się gry, wykonaj następujące instrukcje:
-
Dodaj nową metodę
OnPlayerAdded
do klasyteam_elimination_game
. Metoda ta awansuje gracza dołączającego do toczącej się gry do najniższego poziomu broni, jakim dysponuje inny gracz w drużynie.OnPlayerAdded(InPlayer : player) : void = Print("Dołączył nowy gracz!")
-
Za pomocą funkcji
GetTeam[]
pobierz drużynę dla nowego gracza i zapisz ją w zmiennej lokalnejTeam
. Pobierz dla gracza właściwośćFortCharacter
i zapisz ją w zmiennejFortCharacter
.OnPlayerAdded(InPlayer : player) : void = Print("Dołączył nowy gracz!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[]
-
Aby przypisać nowego gracza do mapy
TeamMap
, musisz uzyskać dostęp do mapyplayer_map
skojarzonej z drużynąTeam
nowego gracza. Pobierz mapęplayer_map
skojarzoną z nowym graczem i zapisz ją w zmiennej lokalnejPlayerMap
.OnPlayerAdded(InPlayer : player) : void = Print("Dołączył nowy gracz!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team]
-
W
PlayerMap
ustaw wynik gracza na 0, a następnie zaktualizuj mapęTeamMap
o utworzoną zmienną lokalnąPlayerMap
.OnPlayerAdded(InPlayer : player) : void = Print("Dołączył nowy gracz!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap
-
Przyznaj graczowi jego pierwszą broń, wywołując metodę
GrantWeapon
, a następnie subskrybuj zdarzenie likwidacji nowego gracza. Kod metodyOnPlayerAdded
powinien wyglądać następująco:OnPlayerAdded(InPlayer : player) : void = Print("Dołączył nowy gracz!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap then: GrantWeapon(option{InPlayer}, 0) Print("Ustaw poziom broni nowego gracza na 0 w TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # subskrybuj zdarzenie likwidacji tego gracza
-
W metodzie
OnBegin
subskrybuj zdarzeniePlayerAddedEvent
przestrzeni gry z użyciem metodyOnPlayerAdded
. Teraz gracz dołączający do toczącej się gry będzie wyzwalał metodęOnPlayerAdded
. ZdarzeniePlayerAddedEvent
jest wyzwalane przez samą przestrzeń gry, dlatego do jego subskrybowania nie potrzeba żadnego konkretnego urządzenia.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Liczba likwidacji do końca gry wynosi {EliminationsToEndGame}") Print("Rozpoczęcie przypisywania graczy") PopulateTeamsAndPlayers() for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Subskrybuj każdy Panel startowy gracza for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Subskrybuj każdego wartownika # Subskrybuj nowych graczy dołączających do gry GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Zapisz skrypt w Visual Studio Code, skompiluj go, a następnie na pasku narzędzi UEFN kliknij opcję Uruchom sesję, aby przetestować poziom w grze. Nowy gracz dołączający do toczącej się gry powinien być spawnowany z pierwszą bronią. Gdy taki gracz lub członek jego drużyny dokona likwidacji, powinien być awansowany do kolejnego poziomu broni.
Następny krok
W kolejnym kroku tego samouczka nauczysz się testować likwidacje w trybie jednego gracza, wykorzystując wartowników.