# Temel Sohbet Kutusu

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

## Neden temel?

Bu sohbet kutusu türü, yalnızca varsayılan sohbet kutusunun yeniden giydirilmiş (reskin) bir versiyonu olarak işlev gördüğü ve kullanıcı etkileşimi açısından pek bir şey sunmadığı için temel olarak kabul edilebilir. Kesinlikle daha kolaydır ve çok fazla kod yazmak zorunda kalmadan sohbet kutusunu biraz renklendirmek isteyen biri için mükemmeldir.

> **UYARI:** [GM:StartChat](https://gmod.tr/wiki/GM:StartChat) fonksiyonundaki bir hata nedeniyle bu eğitim artık çalışmamaktadır, bu sorun düzeltilene kadar [Gelişmiş Sohbet Kutusu](https://gmod.tr/wiki/Advanced_Chatbox) eğitimini kullanmanızı öneririz.

## Başlarken

### Kurulum

Size bunu sıfırdan öğretmeyeceğim ancak bu noktada arkaplan için bir [DFrame](https://gmod.tr/wiki/DFrame), sohbet metni girmek için bir [DTextEntry](https://gmod.tr/wiki/DTextEntry) ve önceki sohbetleri saklamak için bir [RichText](https://gmod.tr/wiki/RichText) paneliniz olduğunu varsayıyorum. Çakışmaları en aza indirmek için bu panelleri global yapmamanızı, bunun yerine referanslarını global bir tabloda saklamanızı öneririm.

```lua
myChat = {}

myChat.dFrame = ...
myChat.dTextEntry = ...
myChat.dRichText = ...
```

Facepunch kullanıcısı [PortalGod](http://facepunch.com/member.php?u=235325) tarafından hazırlanan, bu tür bir sohbet kutusunun nasıl çalıştığına dair temel bir özet aşağıdadır:

- [GM:StartChat](https://gmod.tr/wiki/GM:StartChat) içinde varsayılan sohbet kutusunu gizleyin, yerine vgui sohbet kutusunu gösterin
- [GM:OnPlayerChat](https://gmod.tr/wiki/GM:OnPlayerChat) fonksiyonunu üzerine yazın (overwrite) ve tüm mesajları vgui sohbet kutusuna ekleyin
- Vgui metin girişini değiştirmek için [GM:ChatTextChanged](https://gmod.tr/wiki/GM:ChatTextChanged) kullanın (bir metin girişi olmak zorunda bile değildir)

### Varsayılanı Gizleme

Garry's Mod, varsayılan sohbet kutusunu gizlemeyi kolaylaştıran kullanışlı bir fonksiyona sahiptir, bu fonksiyonda sadece true döndürmeniz yeterlidir. Bu, üzerine yazmanız (override) gereken fonksiyonlardan biridir

```lua
function GAMEMODE:StartChat()
    return true
end
```

Ayrıca varsayılan sohbeti de gizlemek istersiniz

```lua
hook.Add("HUDShouldDraw", "noMoreDefault", function( name )
	if name == "CHudChat" then
		return false
	end
end)
```

### Mesajları Ekleme

Şimdi, PortalGod'un talimatlarına rağmen, OnPlayerChat'e bir hook ekleyeceğiz ve sohbet kutumuzu güncelleyeceğiz

```lua
hook.Add("OnPlayerChat", "myChat", function( player, strText, bTeamOnly, bPlayerIsDead )
	local col = GAMEMODE:GetTeamColor( player ) -- Get the player's team color
	myChat.dRichText:InsertColorChange( col.r, col.g, col.b, 255 ) -- Make their name that color
	myChat.dRichText:AppendText( player:Nick() )

	myChat.dRichText:InsertColorChange( 255, 255, 255, 255 )
	myChat.dRichText:AppendText( ": " .. strText .. "\n" )
end)
```

Son olarak, bu sohbet kutusu sınırlı etkileşime sahip olduğu için teknik olarak kullanıcı ona odaklanmış olmayacağından, DTextEntry panelimizi güncellemek için ChatTextChanged'e bir hook ekliyoruz.

```lua
hook.Add("ChatTextChanged", "myChat_Update", function( text )
	myChat.dTextEntry:SetText( text )
end)
```

## Bitirirken

### Özet

Varsayılan sohbet kutusunun temel düzeyde yeniden giydirilmesinin (reskin) nasıl çalıştığı genel hatlarıyla bu şekildedir. Aslında oyuncunun sohbet kutusuyla etkileşime girmesine izin vermezsiniz, ancak öyleymiş gibi bir yanılsama yaratırsınız.

### Gelişmiş Sohbet Kutuları

[Gelişmiş Sohbet Kutusu](https://gmod.tr/wiki/Advanced_Chatbox)

- [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/Basic_Chatbox
