Diterapkan pada berbagai sumber dan input, filter teks Mencegah pengguna melihat bahasa yang tidak pantas dan informasi pribadi identitas seperti nomor telepon. Roblox secara otomatis menyaring keluaran teks umum seperti pesan yang telah melewati dalam-pengalaman obrolan teks, tetapi Anda bertanggung jawab untuk menyaring setiap teks yang dit
Simulasi Penyaringan
Teks dapat dikumpulkan dan/atau ditampilkan kepada pengguna dalam berbagai skenario, termasuk:
Pengalaman yang mengumpulkan masukan teks pengguna melalui TextBox entri, antarmuka GUI khusus dengan tombol seperti tombol keyboard / keypad, atau model keyboard interaktif di ruang 3D.
Pengalaman yang menghasilkan kata dari karakter acak dan menampilkannya kepada pengguna, karena ada kesempatan itu akan menghasilkan kata-kata yang tidak pantas.
Pengalaman yang terhubung ke server web eksternal untuk mengambil konten yang ditampilkan dalam pengalaman. Biasanya Anda tidak akan memiliki kendali atas konten situs eksternal dan pihak ketiga dapat mengedit informasi.
Pengalaman yang menyimpan teks seperti nama hewan peliharaan pengguna menggunakan toko data, di mana teks yang disimpan mungkin berisi kata-kata yang tidak pantas yang harus disaring saat mengambilnya.
Proses Filtering
TextService:FilterStringAsync() filter dalam teks pengalaman dengan mengambil beberapa teks dan UserId dari pengguna yang menciptakan teks sebagai masukan. Itu mengembalikan objek TextFilterResult yang memiliki dua metode tambahan yang dapat Anda panggil dalam berbagai skenario:
- TextFilterResult:GetNonChatStringForBroadcastAsync() untuk menyaring teks yang terlihat bagi semua pengguna dalam pengalaman, seperti untuk dialog yang memungkinkan pengguna menulis pesan di tanda yang terlihat oleh semua pengguna di server.
- TextFilterResult:GetNonChatStringForUserAsync() untuk menampilkan teks yang disaring untuk satu pengguna spesifik, berdasarkan usia dan detail lainnya.
Dalam konteks TextBox input, contoh berikut mengumpulkan input pada acara Class.Toolbar.
Menafsirkan Masukan Teks - Skrip Klien
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- Acara Remote untuk mengirim masukan teks ke server untuk penyaringan
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Penangani acara untuk fokus hilang dan masukkan ditekan
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("SUBMITTED:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Menafsirkan Masukan Teks - Server Skrip
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Acara Remote untuk menerima masukan teks dari klien untuk disaring
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
local function getFilterResult(text, fromUserId)
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(text, fromUserId)
end)
if success then
return filterResult
else
warn("Error generating TextFilterResult:", errorMessage)
end
end
-- Diaktifkan saat klien mengirimkan input dari TextBox
local function onInputReceived(player, text)
if text ~= "" then
local filterResult = getFilterResult(text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
print("FILTERED:", filteredText)
else
warn("Error filtering text!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)