Aşağıdaki sohbet modüllerini kullanarak, Miras sohbet sistemi dahil olmak üzere sunucu tarafı davranışlarını destekleyebilirsiniz:
- Sohbet Hizmeti : Diğer tüm sohbet modüllerini yöneten bir teklif.
- Sohbet Konuşmacısı : Bir Sohbet Kanalında mesaj oluşturabilen bir varlık; her biri otomatik olarak bir Sohbet Konuşmacısına sahip olacak ve botlar Sohbet Konuşmacıları oluşturarak sohbet edebilir.
- Sohbet Mesajı : Bir Sohbet Konuşmacısının bir Sohbet Kanalına gönderdiği içerik için bir konteyner; mesajı biçimlendirmek veya komutlara ekstra işlev eklemek için kullanılan metadan oluşur.
- Sohbet Kanalı : ChatSpeakers'ın SohbetMesajı değiştirebileceği bir kanal; takım sohbeti ve fısıltı sohbeti için de kullanılır.
Sohbet Hizmeti
ChatService bir tezgahüşü nesnesidir ve Lua sohbet sisteminin sunucu tarafı davranışını, örneğin ChatChannels ve ChatSpeakers gibi, ele alır.
Tüm ModuleScript içindeki ChatModule klasörü bir işlev döndürmeli ve bu işlev ChatService örneği ile çağrılmalıdır.
Yöntemler
Kanal Ekle
- Açıklama: Verilen adla bir SohbetKanalı nesnesi oluşturur ve geri döndürür.
- Geri dönüşler: Sohbet Kanalı
Kanalı Kaldır
- Açıklama: Verilen adla bir kanalı kaldır
- Geri dönüşler: void
GetChannel Yayın Alma
- Açıklama: Verilen adla kanalı geri döndürür veya yoksa nil.
- Geri dönüşler: Sohbet Kanalı
AddSpeaker'ı Ekle
- Açıklama: Belirtilen adla sohbete konuşmacı ekleyin ve ardından geri gönderin.
- Geri dönüşler: Sohbet Konuşmacısı
Konuşmacıyı Kaldır
- Açıklama: Konuşmacıyı verilen isimle sohbetten kaldırır.
- Geri dönüşler: void
GetSpeaker İçindekiler GetSpeaker
- Açıklama: Konuşmacıyı verilen adıyla geri döndürür veya nil mevcut değilse.
- Geri dönüşler: Sohbet Konuşmacısı
GetChannelList alın
- Parametler: hiçbiri
- Açıklama: Sohbetteki tüm özel olmayan kanalların isimleri listesini döndürür.
- Geri dönüşler: array< string >
GetAutoJoinChannelList al
- Parametler: hiçbiri
- Açıklama: Otomatik Katılım'ın doğru olarak ayarlandığı sohbetteki tüm kanalların isimleri listesini döndürür.
- Geri dönüşler: array< string >
KayıtFiltreMesajFonksiyonuKaydet
- Açıklama: functionId tarafından tanımlanan bir filtre işlevini sohbete kaydeder.Mesajdaki herhangi bir değişiklik kalıcı olacak ve mesaj diğer tüm filtre işlevlerinden geçtiğinde görüntülenecek.Bu işlev hoparlöradı, mesaj nesnesi ve mesajın kaynağı olan kanal geçer.
- Geri dönüşler: void
- Örnek:
-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
-- Bu örnek bir anahtar kelime filtreler ve başarılıysa, mesajın sohbetRenkini ayarlar
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- yeşil
local function doFilter(speaker, messageObject, channelName)
-- Mesajın anahtar kelime içerdiğini kontrol et
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Mesajdan anahtar mesajkaldır (filtre), ayrıca ChatColor'u ayarlayın
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
KayıtsızFiltreMesajFonksiyonuKaldır
- Açıklama: Bir filtre işlevini (RegisterFilterMessageFunction tarafından kaydedilmiş) tanımlayıcısına göre kaydedilmez, functionId .
- Geri dönüşler: void
Kayıt Süreç Komutları İşlevi
- Açıklama: Bir süreç komutu işlevini sohbete functionId kaydedilir.Bir mesaj filtrelenmeden önce, func (ve bu tarafından kaydedilen diğer işlevler) aracılığıyla geçecektir.Fonksiyon func mesajın bir komut çağırdığını kontrol etmelidir.Eğer öyleyse, komutun eylemini gerçekleştirin ve gerçek döndürün.Gerçek döndürmek, mesajın aslında bir komut olduğunu ve görüntülenmemesi gerektiğini gösterir.İşlev UnregisterProcess Komut Dosya Fonksiyonu kullanılarak kayıtsız bırakılabilir.
- Geri dönüşler: void
- Örnek:
-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Pepperoni pizza dilimi teçhizat
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
Kayıt Olmayan İşlem Komutları İşlevi
- Açıklama: Bir komut işlemcisini kaydettirmez (Kayıt Etme Komutları İşlevi tarafından kaydedilmiş) tanımlayıcıya göre, functionId .
- Geri dönüşler: void
Etkinlikler
KanalEklendi
- Açıklama: Bir sohbete bir kanal eklenildiğinde ateş eder.
KanalKaldırıldı
- Açıklama: Bir kanal sohbenden kaldırıldığında ateş eder.
KonuşmacıEklendi
- Açıklama: Bir konuşmacı sohbete eklenirse ateş eder.
KonuşmacıKaldırıldı
- Açıklama: Bir konuşmacı sohbetten kaldırıldığında ateş eder.
Sohbet Hoparlörü
Bir Sohbet Konuşmacısı bir Sohbet Kanalı konuşabilen bir varlığın temsilidir.Oyuna otomatik olarak bağlanan her Player oyunla ilişkili bir ChatSpeaker'a sahiptir.Ekstra Sohbet Konuşmacıları, kullanıcılar olmayanlar için (örneğin duyurucular veya ipucu mesajları) ChatService:AddSpeaker() kullanarak inşa edilebilir.
Özellikler
Adı
- Açıklama: Bu hoparlöradı, çok sayıda diğer işlev çağrırken bu konuşmacıya referans verilirken kullanılır.
Yöntemler
Katılma Kanalı
- Açıklama: Konuşmacıyı verilen channelName
- Geri dönüşler: void
LeaveChannel'ı bırak
- Açıklama: Konuşmacıyı verilen channelName ile kanaldan kaldırır
- Geri dönüşler: void
GetChannelList alın
- Parametler: Hiçbiri
- Açıklama: Konuşmacının bulunduğu tüm kanalların isimleri listesini döndürür.
- Geri dönüşler: array< string >
IsInChannel kanalı
- Açıklama: Konuşmacının verilen channelName ile kanalda olup olmadığını döndürür.
- Geri dönüşler: bool
Mesaj söyle SayMessage
- Açıklama: Konuşmacının message söylemesine ve bunun yapılırken oluşturulan ChatMessage nesnesinin geri dönmesine neden olur.
- Geri dönüşler: Sohbet Mesajı
Mesaj gönder
- Parametler: : , : , : , :
- Açıklama: Verilen ChatSpeaker adıyla bir mesaj gönderir.kanalböyle bir hoparlör yoksa, bu yöntem bir uyarı oluşturur ve hoparlör mesajı görmez.
- Geri dönüşler: void
GönderSistemMesajı
- Açıklama: Sistem mesajını ChatChannel 'a verilen channelName ile gönderir.Konuşmacı kanalda değilse, bu mesaj bir uyarı oluşturur ve kanaldaki diğer konuşmacılar mesajı görmez.
- Geri dönüşler: void
Oyuncu Alın
- Parametler: Hiçbiri
- Açıklama: hoparlörilişkili Player nesneyi döndürür.Konuşmacı bir kullanıcı (bot) için değilse, bu nil döndürür.
- Geri dönüşler: Player veya nil
SetExtraData'yı ayarla
- Açıklama: Belirli bir keyKonuşmacı bir Sohbet Mesajı gönderdiğinde, bu ekstra veri mesaja açıkça verilmediğinde mesaja eklenir.Örneğin, hoparlörsohbet renginin ayarlanmasına izin verir.
- Geri dönüşler: void
EkstraVeriAl GetExtraData
- Açıklama: Verilen key ile ilişkili ekstra verileri döndürür, SetExtraData kullanarak ayarlanır.
- Geri dönüşler: Varyant
SetMainChannel'ı ayarla
- Açıklama: Konuşmacıyı verilen kanalda konuşmak için ayarlar. AnaKanalSet'i ateş eder.
- Geri dönüşler: nil
Etkinlikler
Söylenen Mesaj
Alınan Mesaj
AlınanSistemMesajı
- Açıklama: Konuşmacı bir sistemden Sohbet Mesajı aldığında ateşlenir ChatChannel ile verilen channelName .
KanalKatıldı
- Açıklama: Konuşmacı Sohbet Kanalına verilen ile katıldığında ateş edildi.
KanalSağda
- Açıklama: Konuşmacı, verilen ChatChannel ile ayrıldığında ateş edildi.
Sessiz
- Açıklama: Konuşmacı, verilen Sohbet Kanalı ile susturulduğunda ateş edildi (verildiğinde).Bir reason sağlanabilir veya sağlanmayabilir.
Sesi Açık
EkstraVeriGüncellendi
- Açıklama: hoparlörekstra verilerindeki anahtarın varsayılan değeri SetExtraData kullanılarak güncellendiğinde ateş edilir.
AnaKanalSeti
- Açıklama: Konuşmacıların ana kanalı verilen ChatChannel ile değiştirildiğinde ateş edildi.
Sohbet Mesajı
Bir Sohbet Mesajı bir ChatSpeaker tarafından gönderilen bir mesajı temsil eden bir veri yapısıdır.Mesajın uzunluğu, mesajın Roblox tarafından filtrelenip filtrelenmediği ve mesajın görünümüyle ilgili ekstra veriler dahil olmak üzere mesajla ilgili verileri içerir.
Özellikler
ID
- Tür: int
- Açıklama: mesajiçin benzersiz bir sayı tanımlayıcı.
Konuşmacıdan
- Tür: string:
- Açıklama: Mesajı gönderen ChatSpeaker adlı mesajadı.
OrijinalKanal
- Tür: string:
- Açıklama: Mesajın kaynağı olan ChatChannel adı.
Filtrelenmiş
- Tür: bool
- Açıklama: Mesajın Roblox tarafından filtrelenip filtrelenmediğini tanımlar (eğer doğruysa, Mesaj olacaktır nil )
Mesaj Uzunluğu
- Tür: int
- Açıklama: mesajuzunluğu. Mesaj filtrelenmişse bunu bir kriptografik dize oluşturmak için kullanabilirsiniz.
Mesaj
- Açıklama: mesajmetni. Bu özellik, IsFiltered doğruysa nil olacak.
Mesaj Türü
- Tür: string:
- Açıklama: mesajtürü. Bu türler ChatConstants modülünde açıklanır:
- Olası değerler: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Süre
EkstraVeri
- Tür: sözlük< string , çeşit>
Sohbet Kanalı
Sohbet Kanalı bir mesajın ChatSpeakers arasında değiştirilebileceği bir yol olan tek bir kanal hakkında veri depolayan bir nesnedir.Ayrıca, kullanıcıların kanala manuel olarak katılıp katılamayacağını belirleyen mesajların görünürlüğünü belirleyen erişim izni özelliklerine de sahiptir (/join veya /leave komutlarını kullanarak).
Varsayılan olarak, her kullanıcının "Herkes" ve "Sistem" sohbet kanallarına otomatik olarak eklenen bir Sohbet Konuşmacısı vardır (ancak, "Sistem" yalnızca okunur).Kullanıcı bir Player.Team üzerindeyse, sadece o Takım için bir kanala da erişebilirler.
Özellikler
Adı
- Tür: string
- Açıklama: kanaldiğer işlevlerde referans olarak kullanılan adı.
Hoşgeldiniz Mesajı
- Tür: string
- Açıklama: Bir kullanıcı kanala katıldığında görüntülenmesi gereken bir mesaj.
Katılabilir
- Tür: bool
- Açıklama: Bir kullanıcının /join komutunu kullanarak bir kanala manuel olarak katılabileceğini belirler.Bir kullanıcı, bu özellik yanlış olsa bile ChatSpeaker:JoinChannel() veya diğer yollarla bir kanala hala eklenebilir.
Bırakılabilir
- Tür: bool
- Açıklama: Bir kullanıcının /leave komutunu kullanarak bir kanaldan manuel olarak ayrılabileceğini belirler.Bir kullanıcı, bu özellik yanlış olsa bile bir kanaldan ChatSpeaker:LeaveChannel() veya diğer yollarla hala kaldırılabilir.
Otomatik Katılma
- Tür: bool
- Açıklama: Bir oyuncunun ChatSpeaker'ının oyuna katıldıktan sonra kanala otomatik olarak katılıp katılmayacağını belirler.Kullanıcı olmayan konuşmacılar, bu özellik doğru olsa bile, otomatik olarak kanallara katılmayacaktır (Bunu yapmak için ChatSpeaker:JoinChannel() kullanabilirsiniz).
Özel
- Tür: bool
- Açıklama: Kanalın ChatService:GetChannelList() tarafından döndürülen kanallar listesine dahil edilip edilmeyeceğini belirler.Bu, fısıltılı sohbetler ve takım sohbetleri için.
Yöntemler
KickSpeaker'ı
- Açıklama: Verilen speakerName ile konuşmacıyı kanaldan kaldırır, kullanıcıya ve kullanıcının atıldığı kanaldan mesaj gönderir.Bir reason sağlanırsa, neden mesaja dahil edilecektir.
- Geri dönüşler: void
Sessiz Hoparlör
- Açıklama: Konuşmacıyı, verilen speakerName saniye süreyle kanalda sessizleştirir.Eğer duration``nil veya 0 ise, sessizlik süresizdir.Eğer reason sağlanırsa, sebebi içeren bir mesaj kanala gönderilecektir.
- Geri dönüşler: void
Sesi Açma Konuşmacı
- Açıklama: kanalverilen speakerName ile konuşmacıyı aktifleştirir.
- Geri dönüşler: void
IsSpeakerMuted konuşmacı kapalı
- Açıklama: Verilen speakerName konuşmacının şu anda kanalda susturulup susturulmadığını tanımlar.
- Geri dönüşler: bool
GetSpeakerList alın
- Parametler: Hiçbiri
- Açıklama: Şu anda kanalda bulunan ChatSpeaker adlarının hepsini içeren bir liste döndürür.
- Geri dönüşler: array< string >
GönderSistemMesajı
- Açıklama: "Sistem" ChatSpeaker kanalına bir mesaj gönderir.
- Geri dönüşler: void
KayıtFiltreMesajFonksiyonuKaydet
- Açıklama: Bir filtre işlevi kaydedilir, func , kanala tarafından tanımlanan ile tanımlanır functionId .Filtre işlevi ile ChatSpeaker, ChatMessage ve string: mesajın kaynağı olan kanalın adı çağrılacaktır.Mesaja yapılan değişiklikler kalıcı olacak ve filtrelemeden sonra görüntülenecek.
- Geri dönüşler: void
- Örnek:
-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Pepperoni pizza dilimi teçhizat
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
KayıtsızFiltreMesajFonksiyonuKaldır
- Açıklama: Bir filtre işlevini (RegisterFilterMessageFunction tarafından kaydedilmiş) tanımlayıcısına göre kaydedilmez, functionId .
- Geri dönüşler: void
Kayıt Süreç Komutları İşlevi
- Açıklama: Bir süreç komutu işlevi kaydedilir, func , sohbete tarafından tanımlanan functionId , ile.Bir mesaj filtrelenmeden önce, func (ve bu tarafından kaydedilen diğer işlevler) aracılığıyla geçecektir.Fonksiyon func mesajın bir komut çağırdığını kontrol etmelidir.Eğer öyleyse, komutun eylemini gerçekleştirin ve gerçek döndürün.Gerçek döndürmek, mesajın aslında bir komut olduğunu ve görüntülenmemesi gerektiğini gösterir.İşlev UnregisterProcess Komut Dosya Fonksiyonu kullanılarak kayıtsız bırakılabilir.
- Geri dönüşler: void
- Örnek:
-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
-- Bu örnek bir anahtar kelime filtreler ve başarılıysa, mesajın sohbetRenkini ayarlar
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- yeşil
local function doFilter(speaker, messageObject, channelName)
-- Mesajın anahtar kelime içerdiğini kontrol et
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Mesajdan anahtar mesajkaldır (filtre), ayrıca ChatColor'u ayarlayın
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Bir kanal oluştur ve filtre işlevini kaydet
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Kayıt Olmayan İşlem Komutları İşlevi
- Açıklama: Kimliği verilen bir komut işlemcisini kaydettirmez (RegisterProcessCommandsFunction tarafından kaydedilmiştir), functionId .
- Geri dönüşler: void
Etkinlikler
MesajYayınlandı
- Açıklama: Bir mesaj kanala yayınlandığında ateş eder.
KonuşmacıKatıldı
- Açıklama: Bir ChatSpeaker kanala katıldığında ateş eder.
KonuşmacıSol
- Açıklama: Bir ChatSpeaker kanaldan ayrıldığında ateş eder.
KonuşmacıSusturuldu
- Açıklama: Bir ChatSpeaker kanala kapatıldığında ateş eder.
KonuşmacıSesiKapalı
- Açıklama: Bir ChatSpeaker susturulduğunda ateş eder.