Advanced Chatbox
Basit Sohbet Kutusuna Göre Avantajları
Bu yöntemi kullanarak bir sohbet kutusu yapmak, Basit Sohbet Kutusu kullanmaktan biraz daha zordur ve detaylara biraz daha fazla dikkat gerektirir, ancak sohbet kutusunu sadece yeniden tasarlamanın aksine size tam kontrol sağlar. Sohbet kutusunu temelden kodlayarak düğmeler, resim panelleri ve daha fazlasını ekleyebilirsiniz.
Başlarken
Kurulum
Basit sohbet kutusuyla aynı kurulum... DFrame, DTextEntry, RichText ve bir tablo.
İşte Facepunch kullanıcısı PortalGod tarafından hazırlanan bu tür bir sohbet kutusunun nasıl çalıştığına dair temel bir özet.
- GM:PlayerBindPress içinde "messagemode"u devre dışı bırakın, bunun yerine vgui sohbet kutusunu açın ve metin girişine odaklanın.
myChat.dTextEntry:OnEnteriçinde (veya OnKeyCodeTyped ile enter tuşunu kontrol ederek),RunConsoleCommand( "say", myChat.dTextEntry:GetText() )komutunu çalıştırın ve sohbet kutusunu gizleyin.- chat.AddText fonksiyonunu ele geçirin ve argümanları kendiniz işleyin (RichText'e bakın), ancak renkli konsol metni için içinde orijinal chat.AddText'i çağırın.
Hook Ekleme
Yapmanız gereken ilk şey, oyuncunun sohbet tuşlarına basıldığında çağrılan fonksiyonu geçersiz kılmaktır, bunu bir PlayerBindPress hook'u içinde yaparsınız. Bu, oyuncu sohbet tuşlarına bastığında varsayılan sohbet kutusunun görünmesini engelleyecektir. Bu fonksiyonda sohbet kutunuzu açarsınız ve takım sohbeti için bir boolean argümanı eklemenizi şiddetle tavsiye ederim. Oyuncularınızın takımlarıyla konuşmaya çalışıp bunun genele gitmesi kötü olurdu.
Şimdi, sv_cheats'in değiştirilmesi veya bir oyuncunun oyundan ayrılması gibi şeyler için mesajlar göstermek istersiniz, bu tür şeyler önemlidir.
Son olarak, kendi sohbet kutunuza kendi mesajlarınızı ekleyeceğiniz için varsayılan sohbet mesajlarını da gizlemelisiniz.
chat.AddText
Eğer chat.AddText'i geçersiz kılmazsanız, o fonksiyona yapılan tüm çağrılar gizlediğiniz varsayılan sohbet kutusunda görünecektir. Oyuncunun bunu görmesini istiyoruz, bu yüzden orijinal fonksiyonu kendimizinkiyle geçersiz kılacağız. Bu fonksiyonun kaynak kodu mevcut değildir, muhtemelen Lua'da yazılmamıştır, bu yüzden eski fonksiyonu kaydedip sadece onu çağıracağız. Argümanların üç nokta ... olduğunu fark edebilirsiniz - bu, temel olarak o fonksiyona hemen hemen her sayıda argüman gönderebileceğiniz anlamına gelen bir varargs'tır (değişken sayıda argüman).
İşlevselliği Geri Yükleme
Varsayılan sohbet kutusunu kendimizinkiyle geçersiz kıldığımıza göre, varsayılan sohbet kutusu tarafından çağrılan hook'lar artık çağrılmayacak. Bunu düzeltmemiz gerekiyor.
Sohbet kutunuzun metin girişinde, oyuncuya metni söylemesini belirtmelisiniz ki bunun için uygun oyun modu hook'ları çağrılsın. Ayrıca Escape tuşunun sohbet kutunuzu kapattığından emin olmak iyi bir fikir olur, bu yüzden bunu da hesaba katıyoruz.
Sohbet kutusunu açarken, o olay için olan fonksiyonu çağırmak ve ardından DTextEntry'nizin yazılabilir olduğundan emin olmak istersiniz.
Oyuncu sohbet kutunuzu kapattığında, tekrar hareket edebildiklerinden ve yine uygun oyun modu fonksiyonlarının çağrıldığından emin olmanız gerekir.
Sonuç
Özet
Bu hızlı ve kodlama açısından çok az şey kapsasa da, umarım kendi sohbet kutusunu kodlamak ve ona kendi yorumunu katmak isteyen herkes için yararlı bir araç olur. Herhangi bir görsel kod olmadan, bir nevi arka plan (backend) olarak bu ölçekte bir sohbet kutusu oluşturmak için kullanılan temelleri içerir. Bu, varsayılan olarak gömülebilir resimlere sahip olmak gibi süslü bir şey yapmaz, ancak bunu bir temel olarak kullanarak mümkündür.
Örnekler
- Earu's Chatbox - https://github.com/Earu/EasyChat
- Exho's Chatbox - https://github.com/Exho1/eChat
- Custom chat by StyledStrike - https://github.com/StyledStrike/gmod-custom-chat
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord