Temel Sohbet Kutusu

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.

GM:StartChat fonksiyonundaki bir hata nedeniyle bu eğitim artık çalışmamaktadır, bu sorun düzeltilene kadar Gelişmiş Sohbet Kutusu eğitimini kullanmanızı öneririz.

Başlarken

Kurulum

Size bunu sıfırdan öğretmeyeceğim ancak bu noktada arkaplan için bir DFrame, sohbet metni girmek için bir DTextEntry ve önceki sohbetleri saklamak için bir 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.

myChat = {} myChat.dFrame = ... myChat.dTextEntry = ... myChat.dRichText = ...

Facepunch kullanıcısı PortalGod 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 içinde varsayılan sohbet kutusunu gizleyin, yerine vgui sohbet kutusunu gösterin
  • 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 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

function GAMEMODE:StartChat() return true end

Ayrıca varsayılan sohbeti de gizlemek istersiniz

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

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.

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

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