W tej sekcji przedstawiono, w jaki sposób wyszukać graczy oraz drużyny we wcześniej skonfigurowanym środowisku gry.
Definiowanie składowych klasy
- Otwórz Eksplorator Verse i kliknij dwukrotnie plik triad_infiltration_game.verse, aby otworzyć skrypt w Visual Studio Code.
- Na górze pliku dodaj
using { /Verse.org/Random }, aby uzyskać dostęp do funkcjiShuffle(). Użyjesz jej do wylosowania drużyn graczy przed ich zrównoważeniem. Dodaj teżusing { /Fortnite.com/FortPlayerUtilities }, aby uzyskać dostęp do funkcjiRespawn()dla graczy, której użyjesz później do teleportowania graczy do ich miejsc spawnu na początku gry.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } - W definicji klasy
triad_infiltration_gamedodaj następujące pola:- Trzy edytowalne liczby całkowite (integer) o nazwie
MaximumInfiltrators,MaximumAttackersiMaximumDefenders. ZainicjujMaximumInfiltratorsz wartością 2, aMaximumAttackersiMaximumDefendersz wartością 4. Parametry te śledzą maksymalną liczbę graczy w każdej drużynie i posłużą do dynamicznego równoważenia drużyn. Wartości te możesz zmienić w celach testowych lub w celu utworzenia interesujących wariantów w grze.triad_infiltration := class(creative_device): # Aby uniknąć sytuacji, w której gracze nie będą mogli dołączyć do drużyny, ustaw liczbę maksymalną # graczy w ustawieniach wyspy tak, aby odpowiadała sumie wszystkich zmiennych Maximum(Team). # Maksymalna liczba graczy w drużynie infiltratorów. @editable MaximumInfiltrators:int = 2 # Maksymalna liczba graczy w drużynie atakujących. @editable MaximumAttackers:int = 4 # Maksymalna liczba graczy w drużynie obrońców. @editable MaximumDefenders:int = 4 - Zmienna
mapo nazwieTeamsAndTotals. Spowoduje ona zmapowanie drużyn graczy do maksymalnej liczby graczy w danej drużynie.# Maksymalna liczba graczy w drużynie infiltratorów. @editable MaximumInfiltrators:int = 2 # Maksymalna liczba graczy w drużynie atakujących. @editable MaximumAttackers:int = 4 # Maksymalna liczba graczy w drużynie obrońców. @editable MaximumDefenders:int = 4 # Mapa drużyn do ich maksymalnej liczby graczy. var TeamsAndTotals:[team]int = map{} - Edytowalna tablica teleporterów o nazwie
Teleporters. Zawiera ona odwołanie do teleporterów używanych do teleportowania graczy do strefy ich spawnu po zrównoważeniu drużyn.# Mapa drużyn do ich maksymalnej liczby graczy. var TeamsAndTotals:[team]int = map{} # Tablica teleporterów, które teleportują graczy do miejsca spawnu ich drużyny po rozpoczęciu gry. @editable Teleporters:[]teleporter_device = array{} - Edytowalna tablica
item_granter_deviceo nazwieWeaponGranters. Zawiera ona przyznawacze przedmiotów potrzebne do przyznania graczom w momencie spawnu broni zgodnej z drużyną, do której należą.# Tablica teleporterów, które teleportują graczy do miejsca spawnu ich drużyny po rozpoczęciu gry. @editable Teleporters:[]teleporter_device = array{} # Tablica przyznawaczy broni dla każdej drużyny. @editable var WeaponGranters:[]item_granter_device = array{} - Trzy opcjonalne zmienne
teamo nazwieMaybeInfiltrators,MaybeAttackersiMaybeDefenders. Zawierają one odwołanie do poszczególnych drużyn, umożliwiając sprawdzenie, czy drużyny zostały poprawnie skonfigurowane.# Tablica przyznawaczy broni dla każdej drużyny. @editable var WeaponGranters:[]item_granter_device = array{} # Odwołanie do drużyny infiltratorów. var MaybeInfiltrators:?team = false # Odwołanie do drużyny atakujących. var MaybeAttackers:?team = false # Odwołanie do drużyny obrońców. var MaybeDefenders:?team = false - Tablica zmiennych drużyn o nazwie
Teams. Zawiera ona odwołanie do wszystkich drużyn w grze i posłuży do ustawienia opcjonalnych zmiennych drużyn powyżej, a także do wyszukania drużyn, do których gracze mają być przypisywani podczas równoważenia.# Odwołanie do drużyny infiltratorów. var MaybeInfiltrators:?team = false # Odwołanie do drużyny atakujących. var MaybeAttackers:?team = false # Odwołanie do drużyny obrońców. var MaybeDefenders:?team = false # Tablica wszystkich drużyn w grze. var Teams:[]team = array{}
- Trzy edytowalne liczby całkowite (integer) o nazwie
Wyszukiwanie graczy i drużyn w czasie wykonywania programu
- W metodzie
OnBegin()zaktualizuj tablicęTeamso każdą z drużyn skonfigurowanych wcześniej w sekcji Ustawienia doświadczenia. Tablicę wszystkich drużyn w przestrzeni gry możesz pobrać za pomocą funkcjiGetTeams()z interfejsu APIfort_team_collection.OnBegin<override>()<suspends>:void = # Pobierz wszystkie drużyny. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Zapisz odwołanie do każdej drużyny, przypisując zmienne
MaybeInfiltrators,MaybeAttackersiMaybeDefendersposzczególnym drużynom w tablicyTeams.# Zapisz drużyny, aby móc się później do nich odwołać. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} - Teraz sprawdź, czy wszystkie trzy drużyny zostały poprawnie skonfigurowane. Każda ze zmiennych
MaybeInfiltrators,MaybeAttackersiMaybeDefendersjest zmienną typuoption, więc możesz to zrobić, sprawdzając, czy zawierają one wartość rzeczywistą. Jeśli tak, ustaw wartość dla każdej drużyny wTeamsAndTotalsna maksymalną liczbę graczy w tej drużynie.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? 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") else: Logger.Print("Nie udało się znaleźć wszystkich drużyn. Pamiętaj, aby przypisać właściwe drużyny w ustawieniach wyspy.") -
Kod klasy
triad_infiltration_gamepowinien wyglądać teraz następująco:triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Aby uniknąć sytuacji, w której gracze nie będą mogli dołączyć do drużyny, ustaw liczbę maksymalną # graczy w ustawieniach wyspy tak, aby odpowiadała sumie wszystkich zmiennych Maximum(Team). # Maksymalna liczba graczy w drużynie infiltratorów. @editable MaximumInfiltrators:int = 2 # Maksymalna liczba graczy w drużynie atakujących. @editable MaximumAttackers:int = 4 # Maksymalna liczba graczy w drużynie obrońców. @editable MaximumDefenders:int = 4 # Tablica teleporterów, które teleportują graczy do miejsca spawnu ich drużyny po rozpoczęciu gry. @editable Teleporters:[]teleporter_device = array{} # Tablica przyznawaczy broni dla każdej drużyny. @editable var WeaponGranters:[]item_granter_device = array{} # Tablica punktów spawnu graczy dla każdej drużyny. @editable PlayersSpawners:[]player_spawner_device = array{} # Odwołanie do drużyny infiltratorów. var MaybeInfiltrators:?team = false # Odwołanie do drużyny atakujących. var MaybeAttackers:?team = false # Odwołanie do drużyny obrońców. var MaybeDefenders:?team = false # Tablica wszystkich drużyn w grze. var Teams:[]team = array{} # Mapa drużyn do ich maksymalnej liczby graczy. var TeamsAndTotals:[team]int = map{} 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 MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? 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") 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 w Visual Studio Code, a następnie w pozycji Verse w menu głównym kliknij opcję Kompiluj kod Verse, aby zaktualizować urządzenie utworzone w Verse w opracowywanym poziomie.
-
Na pasku narzędzi UEFN kliknij Uruchom sesję, aby przetestować poziom w grze. Podczas testowania poziomu w grze wszystkie trzy drużyny powinny być skonfigurowane w
TeamsAndTotals. Sprawdź to zachowanie w dzienniku.
Następny krok
W następnym kroku tego samouczka dowiesz się, jak równoważyć drużyny graczy asymetrycznie, na początku gry.