Rate-begrenzte Texteingaben

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Dieses Beispiel zeigt, wie man ein Ratenlimit von 1 Minute für ein Texteingabefeld implementiert, das es Spielern ermöglicht, Notizen an ein Gemeinschafts-Bulletin-Board zu posten.

Fügen Sie Folgendes zu einem Script in ServerScriptService hinzu:

Server

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Erstelle RemoteEvent für die Kommunikation
local postNoteEvent = Instance.new("RemoteEvent")
postNoteEvent.Name = "PostNoteEvent"
postNoteEvent.Parent = ReplicatedStorage
-- Ratenlimit von einer Notiz pro Minute pro Spieler
local COOLDOWN_TIME = 60 -- Zeit in Sekunden
local lastPostTime = {}
local function canPlayerPost(player)
local userId = player.UserId
local currentTime = tick()
if lastPostTime[userId] then
local timeSinceLastPost = currentTime - lastPostTime[userId]
if timeSinceLastPost < COOLDOWN_TIME then
return false, COOLDOWN_TIME - timeSinceLastPost
end
end
return true, 0
end
-- Bereitstellung von Postanfragen mit Ratenlimit und Textfilterung
postNoteEvent.OnServerEvent:Connect(function(player, noteData)
local canPost, cooldown = canPlayerPost(player)
if not canPost then
postNoteEvent:FireClient(player, "cooldown", math.ceil(cooldown))
return
end
-- Alle öffentlich geteilten Texte müssen durch einen Textfilter gehen
local filterResult = getFilterResult(noteData.text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
-- Erstelle die Notiz
local note = {
text = filteredText
}
-- Aktualisiere die letzte Post-Zeit
lastPostTime[player.UserId] = tick()
-- Sende die Erfolgeantwort
postNoteEvent:FireClient(player, "success", note)
-- Übertrage die neue Notiz an alle Spieler
postNoteEvent:FireAllClients("newNote", note)
else
warn("Fehler bei der Textfilterung!")
end
end)
-- Aufräumen, wenn der Spieler das Spiel verlässt
Players.PlayerRemoving:Connect(function(player)
lastPostTime[player.UserId] = nil
end)
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.