Po przydzieleniu graczy do drużyn w sposób zrównoważony, chcesz przyznać graczom właściwą broń, zgodnie z ich przydziałem do drużyny. Wykonując poniższą procedurę, nauczysz się przyznawać graczom odpowiedni rodzaj broni w momencie spawnu.
Przyznawanie broni w zależności od drużyny
- W definicji klasy
triad_infiltration_game
dodaj nową funkcję o nazwieGrantTeamWeapon()
. Funkcja ta przyznaje graczowi broń, w zależności od drużyny, do której należy.GrantTeamWeapon(InPlayer:player):void=
- W
GrantTeamWeapon()
pobierz drużynę dla danego gracza. Następnie w pętlifor
wykonaj iterację po każdej drużynie w tablicyTeams
, pobierając indeks danej drużyny i zapisując go w zmiennejTeamIndex
. Sprawdź, czy drużyna danego gracza jest zgodna z tą drużyną, dodając warunek filtra w pętlifor
.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam):
- Warunek filtra zapewni uruchomienie kodu w pętli
for
z poprawną drużyną, więc pobierz odpowiedni przyznawacz przedmiotów dla danej drużyny, indeksując tablicęWeaponGranters
z użyciemTeamIndex
odpowiedniej drużyny. Na końcu wywołajGrantItem()
, używając podanego gracza. Otrzymany kod funkcjiGrantTeamWeapon()
powinien wyglądać następująco:# Przyznaje graczom broń w oparciu o indeks drużyny w tablicy Teams, # wykonując indeksowanie tablicy WeaponGranters. GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): if(WeaponGranter := WeaponGranters[TeamIndex]): WeaponGranter.GrantItem(InPlayer) Logger.Print("Gracz z drużyny {TeamIndex + 1} otrzymał broń")
Upewnij się, że kolejność drużyn w tablicy
Teams
jest zgodna z kolejnością przyznawaczy przedmiotów w tablicyWeaponGranters
. Jeśli infiltratorzy są drużyną nr 1, wówczas pierwszy przyznawacz w tablicyWeaponGranters
powinien być przeznaczony dla infiltratorów. Dla pewności sięgnij do edytora i sprawdź dokładnie, czy te wartości są prawidłowe.
Przyznawanie broni w momencie spawnu graczy
- W definicji klasy
triad_infiltration_game
dodaj nową funkcję o nazwieOnPlayerSpawn()
. Funkcja wykorzystuje elementagent
i używa go do wywołania funkcjiGrantTeamWeapon()
w celu przyznania graczowi odpowiedniej broni.OnPlayerSpawn(SpawnedAgent:agent):void=
- W funkcji
OnPlayerSpawn()
przypiszSpawnedAgent
doplayer
. Następnie wywołaj funkcjęGrantTeamWeapon()
, przekazując gracza. Otrzymana funkcjaOnPlayerSpawn()
powinna wyglądać następująco:# Kod uruchamiany, gdy dowolny gracz zostanie zespawnowany na panelu startowym. # Wywołuje GrantTeamWeapon z zastosowaniem podanej zmiennej SpawnedAgent. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Próbuję przyznać zespawnowanemu graczowi broń") GrantTeamWeapon(SpawnedPlayer)
- W
OnBegin()
, przed wywołaniem doBalanceTeams()
, zasubskrybuj zdarzenieSpawnedEvent
poszczególnych graczy za pomocą pętlifor
do zdefiniowanej przed chwilą funkcjiOnPlayerSpawn()
.OnBegin<override>()<suspends>:void = # Pobierz wszystkie drużyny set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Zapisz drużyny, aby móc się później do nich odwołać set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("Znaleziono wszystkie trzy drużyny") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Ustaw wszystkie trzy drużyny w TeamsAndTotals") then: #Zasubskrybuj PlayerAddedEvent, aby umożliwić ponowne zrównoważenie drużyny, gdy do gry dołączy nowy gracz for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Nie udało się znaleźć wszystkich drużyn. Pamiętaj, aby przypisać właściwe drużyny w ustawieniach wyspy.")
-
Zapisz skrypt, skompiluj go, a następnie na pasku narzędzi UEFN kliknij opcję Uruchom sesję, aby przetestować poziom w grze. W trakcie testowania poziomu w grze każdy gracz powinien trafiać do drużyny, w której różnica liczebności graczy jest największa, a także spawnować się z rodzajem broni właściwym dla swojej drużyny. Zweryfikuj to zachowanie na podstawie dziennika.
Następny krok
W następnym kroku tego samouczka dowiesz się, jak skonfigurować infiltratorów w taki sposób, aby w momencie spawnu i rozpoczęcia gry stawali się niewidoczni.