Artık oyuncuları takımlara dengeli bir şekilde dağıttığına göre, atandıkları takıma göre oyunculara doğru silahları vermen gerekiyor. Oyunculara doğduklarında uygun silahların nasıl verileceği hakkında bilgi edinmek için aşağıdaki adımları izle.
Takıma Göre Silah Verme
triad_infiltration_game
sınıf tanımınaGrantTeamWeapon()
adlı yeni bir fonksiyon ekle. Bu fonksiyon, bir oyuncuya bulunduğu takıma göre bir silah verir.GrantTeamWeapon(InPlayer:player):void=
GrantTeamWeapon()
dizisinde ilgili oyuncunun takımını al. Sonra birfor
döngüsündeTeams
dizisindeki her bir takım ile yineleme yap ve takımın dizisini alıp birTeamIndex
değişkeninde depola.for
döngünde bir filtreleme koşulu olarak ilgili oyuncunun takımının bu takımla eşleşip eşleşmediğini kontrol et.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam):
- Filtreleme koşulun
for
döngüsündeki kodun doğru takımla çalışmasını sağlayacağından, takıma uygun eşya vericiyi almak için o takımınTeamIndex
değerini kullanarakWeaponGranters
içinde dizin oluştur. Son olarak ilgili oyuncuyu kullanarakGrantItem()
çağır.GrantTeamWeapon()
kodun şu şekilde görünmelidir:# Oyunculara Takımlar dizisindeki takımlarının dizinine göre bir silah verir, # bunun için WeaponGranters dizisinde bir dizin oluşturur. 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("{TeamIndex + 1} takımındaki bir Oyuncuya bir silah verildi")
Teams
içindeki takımlarının sırasıylaWeaponGranters
içindeki eşya vericilerinin sırasının eşleştiğinden emin ol. Casuslar 1. Takım iseWeaponGranters
içindeki ilk eşya verici, Casuslar için olmalıdır. Editörde bu değerlerin doğru olup olmadığını iki kez kontrol et.
Oyuncu Doğduğunda Silah Verme
triad_infiltration_game
sınıf tanımınaOnPlayerSpawn()
adlı yeni bir fonksiyon ekle. Bu fonksiyon biragent
alır ve onu,GrantTeamWeapon()
çağırarak oyuncuya uygun silahı vermek için kullanır.OnPlayerSpawn(SpawnedAgent:agent):void=
OnPlayerSpawn()
fonksiyonundaSpawnedAgent
değerini birplayer
değerine dönüştür. Sonra oyuncuyu geçerkenGrantTeamWeapon()
fonksiyonunu çağır.OnPlayerSpawn()
fonksiyonun şu şekilde görünmelidir:# Bir doğma karesinden herhangi bir oyuncu doğduğunda çalışır. # Belirtilen SpawnedAgent değerini kullanarak GrantTeamWeapon fonksiyonunu çağırır. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Doğan oyuncuya bir silah vermeyi deniyor") GrantTeamWeapon(SpawnedPlayer)
OnBegin()
dizisindeBalanceTeams()
çağrısını yapmadan önce birfor
döngüsü kullanarak her bir oyuncu doğma yerininSpawnedEvent
değerini, yeni tanımladığınOnPlayerSpawn()
fonksiyonuna abone yap.OnBegin<override>()<suspends>:void = # Bütün Takımları al set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Takımları daha sonra başvurmak üzere kaydet set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("Üç takımın hepsi bulundu") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("TeamsAndTotals içinde üç takımın hepsi ayarlandı") then: #Yeni bir oyuncu oyuna katıldığında takımların yeniden dengelenmesine olanak tanıyan PlayerAddedEvent olayına abone ol for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Bütün takımlar bulunamadı, ada ayarlarında doğru takımları atadığından emin ol.")
-
Kodu kaydet, derle ve bölüme oynanış testi uygulamak için UEFN araç çubuğunda oturumu başlat düğmesine tıkla. Bölümüne oynanış testi uyguladığında her oyuncunun en büyük farka sahip takıma atanması ve kendi takımına uygun bir silahla doğması gerekir. Günlüğü kullanarak bu davranışı doğrula.
Sonraki Adım
Bu eğitimin sonraki adımında, Casuslar doğduğunda ve oyun başladığında onları nasıl görünmez yapacağını öğreneceksin.