# Oyuncu Sınıfları

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/Player_Classes
- **Çeviri tarihi:** 2025-09-08

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](https://gmod.tr/wiki/Structures/PLAYER) 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.

```lua
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.

> **NOT:** [player_manager.SetPlayerClass](https://gmod.tr/wiki/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](https://gmod.tr/wiki/player_manager.OnPlayerSpawn) fonksiyonunu otomatik olarak çağırmaz. Hatta mevcut oyun modu veya eklenti(ler) varsayılan [GM:PlayerSpawn](https://gmod.tr/wiki/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.

```lua
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.

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/Player_Classes
