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_gamedodaj 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ętliforwykonaj 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
forz poprawną drużyną, więc pobierz odpowiedni przyznawacz przedmiotów dla danej drużyny, indeksując tablicęWeaponGrantersz użyciemTeamIndexodpowiedniej 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
Teamsjest zgodna z kolejnością przyznawaczy przedmiotów w tablicyWeaponGranters. Jeśli infiltratorzy są drużyną nr 1, wówczas pierwszy przyznawacz w tablicyWeaponGranterspowinien 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_gamedodaj nową funkcję o nazwieOnPlayerSpawn(). Funkcja wykorzystuje elementagenti używa go do wywołania funkcjiGrantTeamWeapon()w celu przyznania graczowi odpowiedniej broni.OnPlayerSpawn(SpawnedAgent:agent):void= - W funkcji
OnPlayerSpawn()przypiszSpawnedAgentdoplayer. 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 zdarzenieSpawnedEventposzczególnych graczy za pomocą pętlifordo 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.