Tecrübeli Olmayan Teks Sohbet

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Roblox'ta deneyim içi sohbet text chat sistemi ile, oyuncular canlı oturumlarda birbirleriyle mesaj gönderebilir. Sistem, sohbet işlevlerini genişletmek ve özelleştirmek için bir dizi yöntem ve etkinliği sağlar, bunlar arasında özelleştirilmiş gereksinimler

Bu rehber, sohbet iş akışını ve sohbet sisteminin işlevlerini genişletmek için sohbet iş akışını ve yaklaşımlarını kapsar. For more information on customizing the chat user interface (UI), see Kullanıcı Arayüzü'nü Kişiselleştirme .

Sohbet İşlemleri

Tecrübesiz metin sohbet sistemi, özelleştirilmiş sohbet davranışları için genişletilebilen değiştirilebilir sınıf ve özelleştirilebilen veri nesneleri olarak ikiye ayrılır.

Değiştirilebilir Chat Sınıfları

Tecrübeli olmayan metin sohbet sistemi, şu değiştirilebilir sınıfları sağlar:

  • TextChatService — Bu tekli sınıf, sohbet mesaj filtreleme, moderasyon ve kullanıcı izinleri dahil olmak üzere genel sohbet sistemini yönetmekle sorumludur. sunucuerişilebilir, bir dizi metod ve etkinliği sağlar, diğer text chat API'leri veya oyuncu eylemleri aracılığıyla sohbet işlemi işlemi işlemi işlemi işlemi
  • TextChannel — Bu sınıf, oyuncu tarafından gönderilen sohbet mesajlarını sunucudan oyuncuya gösteren bir text chat kanalını temsil eder ve onları diğer oyunculara göre gruplara gösterir. Bunu kullanarak, deneyiminizdeki text채널 grupları oluşturabilir, modifiye edebilir ve yöneteb
  • TextChatCommand — Bu sınıf, oyuncuların özel karakterleri bir komut adını takib ederek özel eylemleri veya davranışları çağırmasını sağlayan özel sohbet komutları oluşturmanızı sağlar. Chat komutları, oyun deneyimine eklenmesi için ek güvenlik ve etkileşim yönetimi için yararlıdır. Ayrıca, kısayollarl

Değiştirilemez Chat Objeleri

Tecrübeli olmayan metin sohbet sistemi, değiştiremezsiniz modu okuma-yalın aşağıdaki özellikleri içerir:

  • TextChatMessage : Bu nesne, bir text chat kanalındaki bir mesajı temsil eder ve mesajın gönderenine, orijinal mesajına, filtrelenmiş mesajına ve yaratılış zamanına ilişkin temel bilgileri içerir.
  • TextSource : Bu nesne, bir oyuncunun kanalındaki bir mesaj göndericisini temsil eder. Eğer bir oyuncu birden fazla mesaj kanalında ise, birden fazla kaynaktır da olabilir.

Sohbet Grafiği

Sohbet mesajı gönderme ve teslim süreci, yöntemler, çağrılar ve etkinlikler değiştirilebilir sohbet sınıfı objelerinin üç taraflı klient-sunucu modelindeki değiştirilemez sohbet objeleriyle birlikte çalışır:

  • mesajgönderen oyuncunun yerel cihazı olan gönderici.
  • Diğer oyuncuların yerel cihazları olan alıcıları alıyor.
  • Mesajı gönderen müşteriden alma mesajını alan merkezi işlemci ve teslimatı alan müşterilere işleyen sunucudur.
A flowchart of the in-experience text chat workflow

Akış şeması gösterdiği gibi, deneyim dışı metin sohbet sistemi, bir sohbet mesajını şu adımlar aracılığıyla işleyin:

  1. Bir oyuncu lokal cihazından bir mesaj gönderir ve TextChannel:SendAsync() metodunu tetikler. Bu metod, mesajı işleyip, sohbet emri veya normal bir sohbet mesajı olduğunu belirler.
  2. Oyuncu bir sohbet komutu giriyorsa, komutu yerine getirmek için TextChatCommand.Triggered etkinliğini başlatır.
  3. Oyuncu girişi normal bir sohbet mesajısa, TextChatService.SendingMessage ile göndericiye orijinal mesajı gösterir. Aynı anda, TextChannel:SendAsync() ile mesaj sunucusuna geçer.
  4. Sunucu TextChannel.ShouldDeliverCallback ı çalıştırır ve mesajı Roblox topluluk filtreleme gereksinimlerine dayanarak diğer oyunculara göndereceğiniz konusunda karar verir.
  5. Eğer TextChannel.ShouldDeliverCallback ile mesajın diğer oyunculara gönderileceğine karar verirse, sunucu herhangi bir filtreyi uygular ve TextChannel.OnIncomingMessage'i iki kez çalıştırır:
    1. İşlemci, TextChatService.MessageReceived etkinliği aracılığıyla mesajı işlemek için ilk kez göndericiye işaret verir. Bu ayrıca, göndericiye gelen mesajı görüntüleyiciye gösteren geleneksel mesajı da değiştirir. Mesaj aynı olabilir, eğer orijinal mesaj filtrelenmesi gerekmezse.
    2. İkinci gün, mesajı diğer oyunculara göstermek için TextChatService.MessageReceived etkinliğini tetiklemek için alıcı klientte.

Sohbet sistemi iş akışının birkaç alanında davranışı genişletebilir ve özelleştirebilirsiniz, ancak sistemin nasıl işlediğini gösteren adımlar aynı kalır.

Mesaj Teslim Davranışlarını Özelleştirme

Varsayılan sohbet mesajı teslim davranışına bağlı kalarak, TextChannel.ShouldDeliverCallback kullanılır, izinleri ve belirli davranışları ekleyerek oyuncuların özelleştirilmiş etkileşim için bir mesaj alıp alamayacağını belirlemek için:

  • Oyuncuların aynı grubun veya takımın iletişim kurabileceği grup tabanlı sohbeti desteklemek.
  • Oyuncuların sadece yakınlarına mesaj gönderebildiği yakınlık temelli sohbeti desteklemek.
  • Oyuncuların bazı özelliklere sahip mesajlar göndermelerini engellemek. Örneğin, ölüm durumu olan oyuncuların mesajlarını yaşayan oyunculara göndermesine izin vermez.
  • Chat'ta doğru cevapların diğer oyunculara görünmez olmasını sağlayan tahmin etme özelliği ekleniyor.

Aşağıdaki örnek, bir yerlerdeki oyuncu karakterleri arasındaki özel sohbeti nasıl uygulayacağını gösterir. Bu, TextSource kullanarak bir oyuncu karakterinin yerini belirlemek için çağrıyı genişletir. Eğer bu işlev false


local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Bu örnek genel kanalı kullanır; bunu özel bir kanal ile değiştirebilirsiniz
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Bir oyuncunun karakterinin konumunu almak için bir işlev tanımlayın
local function getPositionFromUserId(userId: number)
-- Verilen kullanıcı ID'si ile ilgili olan oyuncuyu al
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Oyuncu varsa, onun karakterinin konumunu alın.
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Oyuncu veya karakter bulunamadığında varsayılan bir konum döndür
return Vector3.zero
end
-- Genel kanalın mesaj teslimini kontrol etmesi için çağrıyı ayarla
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Mesaj göndericisinin ve hedefinin konumlarını alın
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Gönderici ve hedef arasındaki mesafe 50'den daha küçükse, mesajı gönder
return (targetPos - sourcePos).Magnitude < 50
end

Özel Komutlar Oluşturulması

Tecrübeli metin sohbet sistemi, takım tabanlı sohbet kanalları oluşturmak ve avatar ifadegibi ortak amaçlar için içgörü komutlarına sahiptir. Onları etkinleşt

Aşağıdaki örnek, oyuncuların karakterlerinin boyutunu artırmak veya azaltmak için /super veya /mini ile girdiğinde nasıl bir sohbet komutu oluşturacağını gösteriyor.

  1. Class.TextChatService içinde bir TextChatService istemcisi ekle.

  2. Bunu Boyut Komutu olarak yeniden adlandırın.

  3. Özelliklerini PrimaryAlias olarak belirleyin ve /super olarak mini olarak.

  4. Karakter boyutunu artıran sohbet komutunun bir çağrısını tanımlamak için ServerScriptService içine Class.Script ekle.

    Kod

    local TextChatService = game:GetService("TextChatService")
    local Players = game:GetService("Players")
    local sizeCommand: TextChatCommand = TextChatService:WaitForChild("SizeCommand")
    sizeCommand.Triggered:Connect(function(textSource, message)
    local scaleMult = 1
    local messageWords = string.split(message, " ")
    if messageWords[1] == "/super" then
    scaleMult = 2
    elseif messageWords[1] == "/mini" then
    scaleMult = 0.5
    end
    local player = Players:GetPlayerByUserId(textSource.UserId)
    if player then
    local character = player.Character
    if character then
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    for _, child in humanoid:GetChildren() do
    if child:IsA("NumberValue") then
    child.Value *= scaleMult
    end
    end
    end
    end
    end
    end)

Miras Sohbet'tan Geçiş

Bu bölüm, geçmiş sohbet sisteminden gelen herhangi bir sohbet işlevini ve davranışını uygulamak için alternatif yöntemler sağlayarak sizi yardımcı eder.

Mevcut bir deneyimin var varsayılan sohbet sisteminden in-experience text chat sistemine geçmek için:

  1. In the Explorer window, select TextChatService .

  2. Özellikler Penceresinde, SohbetVersiyonu menüsünü bulun ve TextChatService seçin.

Temel Fonksiyonlar

Her iki sistem de aynı temel sohbet işlevlerini paylaşsa da, deneyim içi sohbet sistemlerinin uygulanımları genel olarak daha sürdürülebilir ve daha kolay itilenir.

FonksiyonlulukMiras SohbetTecrübeli Olmayan Teks SohbetFarklılıklar
Bir sohbet mesajı gönderPlayers:Chat()TextChannel:SendAsync()Class.TextChatService:SendAsync() metodu, zengin metin biçimi biçimlendirme ve mesaj önceliği gibi daha gelişmiş sohbet özelliklerini destekler. Ayrıca, yanlış mesajların gönderilmesini önlemek için içgörsel filtrelemeyi de destekler.
Mesajların Geri Çağrılarını GerçekleştirChat:InvokeChatCallback()``Class.Chat:RegisterChatCallback()Class.TextChatService.SendingMessage``Class.TextChatService.OnIncomingMessageMiras chat sistemi, mesajların gönderilmesi için chat sistemi olaylarına bir işlev bağlar. Deneyimli metin sohbet sisteminin iki yöntemi daha fazla esneklik ve özelleştirme seçeneği sunar.
Özel Chat Komutları EkleChatService/ChatCommand modülüTextChatCommandTecrübeli olmayan text chat sistemi, kullanıcının özelleştirme için bir metin komutu kullanması yerine kullanıcı temsil eden bir sınıfı vardır.
Bir Sistem Mesajını GörüntüleStarterGui:SetCore() using "ChatMakeSystemMessage"TextChannel:DisplaySystemMessage()Class.TextChannel.OnIncomingMessage çağrısı, bir mesajın görünümünü özelleştirmek için bir TextChatMessageProperties instansı dönderebilir.
Sohbeti KapatOyun Ayarları Studio ve ChatWindow/ChatSettings modülü kullanılarak sohbet penceresini gizlemek içinChatWindowConfiguration.Enabled

Mesaj Filtreleme

Tecrübeli olmayan metin sohbet sistemi, her oyuncunun hesabına göre sohbet mesajlarını otomatik olarak filtreler, böylece tüm türlerdeki sohbet mesajları için manuel olarak metin filtrelemeyi gerektirmez.

FonksiyonlulukMiras SohbetTecrübeli Olmayan Teks Sohbet
Bireysel Oyuncu için Mesajı FiltreleChat:FilterStringAsync()yok
Yayınlanan Mesajları FiltrelemeChat:FilterStringForBroadcast()yok

Pencere ve Balon Sohbeti

Chat penceresi ve balon sohbeti davranışı ve özelleştirme seçenekleri, miras chat sisteminin özelleştirmeyi kullanıyor olmas

FonksiyonlulukMiras SohbetTecrübeli Olmayan Teks Sohbet
Sohbet Penceresini EtkinleştirClass.Chat.LoadDefaultChat``Class.Players.ClassicChatChatWindowConfiguration.Enabled
Konuşma balonlarını SohbetClass.Chat.BubbleChatEnabled``Class.Players.BubbleChatBubbleChatConfiguration.Enabled
Sohbet Penceresi Özelliklerini AyarlaPlayers:SetChatStyle()ChatWindowConfiguration
Konuşma balonu özelliklerini ayarlaClass.Chat:SetBubbleChatSettings()``Class.Chat.BubbleChatSettingsChanged()``Class.Players.BubbleChat 0> Class.Players:SetChatStyle()0>BubbleChatConfiguration
NPC Balonlarını EtkinleştirChat:Chat()TextChatService:DisplayBubble()