Filtrowanie tekstu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Zastosowany do różnych źródeł i wejść, filtrowanie tekstu zapobiega użytkownikom widząc nieodpowiedni język i osobiste identyfikatory informacji, takie jak numery telefonów. Roblox automatycznie filtrowuje zwykłe wyniki tekstu, takie jak wiadomości, które przeszły przez czat tekstowy w doświadczeniu, ale jesteś od

Filtry Scenariuszy

Tekst może być zebrany i/lub wyświetlony dla użytkowników w różnych scenariuszach, w tym:

  • Doświadczenie, które zbiera wejścia tekstowe użytkowników poprzez wpisy w TextBox pozycjach, niestandardowy interfejs GUI z przyciskami, takimi jak klawiatura/klawiatura lub model interaktywnej klawiatury w przestrzeni 3D.

  • Doświadczenie, które generuje słowa z losowych znaków i wyświetla je dla użytkowników, ponieważ istnieje szansa, że stworzy nieodpowiednie słowa.

  • Doświadczenie, które łączy się z zewnętrznym serwerem webowym, aby uzyskać treści, które są wyświetlane w doświadczeniu. Często nie będziesz miał kontroli nad treścią zewnętrznej strony i strona trzecia może edytować informacje.

  • Doświadczenie, które przechowuje tekst, takich jak imiona zwierząt użytkowników, używając przechowywanie danych, gdzie przechowywany tekst może zawierać nieodpowiednie słowa, które należy filtrować podczas ich odczytywania.

Proces filtrowania

TextService:FilterStringAsync() filtry w tekście w czasie wrażenia, biorąc UserId użytkownika, który stworzył tekst jako wejście. Wynika ono TextFilterResult obiekt, który ma dwa dodatkowe metody, które możesz wezwywać w różnych sytuacjach:

W kontekście wpisu TextBox w polu FocusLost zbiera się wpisy

Filtrowanie wejścia tekstowego - Kod klienta

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent do wysyłania tekstu do serwera do filtrowania
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Przycisk do zdarzeń dla utraconego skupienia i naciśniętego Enter
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)
Filtrowanie wejścia tekstowego - Kod serwera

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent do otrzymania tekstu wejścia od klienta do filtrowania
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
-- Wystrzelony, gdy klient wysyłał wejścia z 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)