Oyuncu Sınıfları

Oyuncu sınıfları (player class) çalışma zamanında değiştirilebilir ve takas edilebilir. Oyuncunun hızı, boyu, doğarken sahip olduğu silahlar, öldüğünde ne olacağı, doğduğunda ne olacağı gibi şeyleri değiştirirler.

Bir Team Fortress 2 oyun modu hayal edin. Scout'un HWG'den daha hızlı koşmasını istersiniz. Bu yüzden onlar için farklı sınıflar tasarlarsınız. Bir oyuncu doğduğunda onun sınıfını ayarlarsınız ve o oyuncu bu niteliklere sahip olur.

Oyuncu sınıfları türetilebilir (derived). Böylece oyun modunuz tüm oyuncularınız için ortak bir sınıf tanımlayabilir ve buradan farklı sınıflar türetebilir.

Varsayılan alanların bir listesini burada bulabilirsiniz.

Neden

Geleneksel olarak, oyun modunuzda bunu yapmak isteseydiniz ya buna benzer bir sistem kodlardınız ya da spawn fonksiyonlarınızda bir sürü if/else bloğu ile karşılaşırdınız.

Bu sistem, süreci birleşik ve nesne yönelimli hale getirerek bu karmaşayı ortadan kaldırır.

Bir oyuncunun sınıfını ayarlama

Bir oyuncunun sınıfını ayarlamak kolayca yapılır. Bunu yalnızca sunucu tarafında (serverside) yapmanız gerekir.

player_manager.SetPlayerClass( ply, "player_sandbox" )

Bu genellikle PlayerSpawn oyun modu kancasında (hook) yapılır - ancak istediğiniz herhangi bir yerde çağırabilirsiniz.

player_manager.SetPlayerClass, o oyuncuyu istenen sınıf olarak ayarlar, ancak oyuncu yeniden doğana kadar (temel oyun modunda) oyuncunun varlığı üzerinde (hareket hızı vb. şeyleri uygulamak için) player_manager.OnPlayerSpawn fonksiyonunu otomatik olarak çağırmaz. Hatta mevcut oyun modu veya eklenti(ler) varsayılan GM:PlayerSpawn oyun modu kancasını geçersiz kılarsa potansiyel olarak hiç çağırmayabilir.

Bir Oyuncu Sınıfı

Oyuncu sınıfının kendisi çok fazla yoruma ihtiyaç duymaz. Çoğunlukla kendi kendini açıklayıcı olmalıdır.

Aşağıdaki sınıf, "player_default" sınıfından türetilen "player_custom" adında yeni bir oyuncu sınıfı oluşturur. Oyuncu bir tabanca ile doğar.

DEFINE_BASECLASS( "player_default" ) local PLAYER = {} -- -- Tüm geçersiz kılınabilir değişkenler için gamemodes/base/player_class/player_default.lua dosyasına bakın -- PLAYER.WalkSpeed = 200 PLAYER.RunSpeed = 400 function PLAYER:Loadout() self.Player:RemoveAllAmmo() self.Player:GiveAmmo( 256, "Pistol", true ) self.Player:Give( "weapon_pistol" ) end player_manager.RegisterClass( "player_custom", PLAYER, "player_default" )

Bu oyuncu sınıfı dosyaları genellikle `gamemode/player_class/` dizininde bulunur ve otomatik olarak yüklenmezler. Onları oyun modunuzun `shared.lua` dosyasında yüklemelisiniz. Ve doğru sırada yüklenmelidirler - böylece temel sınıflar, onlardan türetilen alt sınıflardan önce yüklenir.

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord