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ę
OnPlayerAddeddo 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śćFortCharacteri 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_mapskojarzonej z drużynąTeamnowego gracza. Pobierz mapęplayer_mapskojarzoną 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
PlayerMapustaw wynik gracza na 0, a następnie zaktualizuj mapęTeamMapo 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 metodyOnPlayerAddedpowinien 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
OnBeginsubskrybuj zdarzeniePlayerAddedEventprzestrzeni gry z użyciem metodyOnPlayerAdded. Teraz gracz dołączający do toczącej się gry będzie wyzwalał metodęOnPlayerAdded. ZdarzeniePlayerAddedEventjest 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.