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:
- TextFilterResult:GetNonChatStringForBroadcastAsync() dla filtrowania tekstu widocznego dla wszystkich użytkowników w doświadczeniu, takiego jak dla dialogu, który umożliwia użytkownikowi napisanie wiadomości na znaku, który jest widoczny dla wszystkich użytkowników na serwerze.
- TextFilterResult:GetNonChatStringForUserAsync() do wyświetlenia filtrowanego tekstu dla jednego konkretnego użytkownika, w zależności od wieku i innych szczegółów.
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)