Pemfilteran teks

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Diterapkan pada berbagai sumber dan input, filter teks mencegah pengguna melihat bahasa tidak pantas dan informasi yang dapat diidentifikasi secara pribadi seperti nomor telepon.Roblox secara otomatis menyaring output teks umum seperti pesan yang telah melalui obrolan teks dalam pengalaman , tetapi Anda bertanggung jawab untuk menyaring teks apa pun yang ditampilkan yang tidak memiliki kontrol eksplisit .

Filter skenario

Teks dapat dikumpulkan dan/atau ditampilkan kepada pengguna dalam berbagai skenario, termasuk:

  • Pengalaman yang mengumpulkan masukan teks pengguna melalui entri melalui entri, GUI khusus dengan tombol seperti keyboard/keypad, atau model keyboard interaktif di ruang 3D.

  • Pengalaman yang menghasilkan kata-kata dari karakter acak dan menampilkannya kepada pengguna, karena ada kemungkinan akan membuat kata-kata yang tidak pantas.

  • Pengalaman yang terhubung ke server web eksternal untuk mengambil konten yang ditampilkan dalam pengalaman.Seringkali Anda tidak akan memiliki kontrol atas konten situs eksternal dan pihak ketiga dapat mengedit informasi.

  • Pengalaman yang menyimpan teks seperti nama hewan peliharaan pengguna menggunakan penyimpanan data, di mana teks yang disimpan mungkin mengandung kata-kata tidak pantas yang harus disaring saat mengambilnya.

Proses penyaringan

TextService:FilterStringAsync() filter teks dalam pengalaman dengan mengambil serangkaian teks dan UserId pengguna yang membuat teks sebagai input.Ini menghasilkan objek TextFilterResult yang memiliki dua metode tambahan yang dapat Anda panggil dalam skenario yang berbeda:

Dalam konteks masuk TextBox , contoh berikut mengumpulkan masukan pada acara FocusLost dan mengirimkannya ke server melalui RemoteEvent .Di server, ini dipfilter terlebih dahulu melalui FilterStringAsync() dan kemudian GetNonChatStringForBroadcastAsync() dengan niat bahwa teks akan ditampilkan kepada semua pengguna di objek sisi server seperti SurfaceGui di dunia 3D.

Pemfilteran input 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
-- RemoteEvent untuk mengirim input teks ke server untuk disaring
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Pengelola 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)
Pemfilteran Masukan Teks - Skrip Server

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent untuk menerima input teks dari klien untuk penyaringan
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
-- Ditembak ketika 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)