Entrées de texte soumises à un taux limité

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Cet exemple montre comment mettre en œuvre une limite de taux de 1 minute sur un champ d'entrée de texte qui permet aux joueurs de publier des notes sur un tableau d'affichage communautaire.

Ajoutez ce qui suit à un Script dans ServerScriptService :

Serveur

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Créer RemoteEvent pour la communication
local postNoteEvent = Instance.new("RemoteEvent")
postNoteEvent.Name = "PostNoteEvent"
postNoteEvent.Parent = ReplicatedStorage
-- Limite de taux d'une note par minute par joueur
local COOLDOWN_TIME = 60 -- Temps en secondes
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
-- Gérer les demandes de publication avec limite de taux et filtrage de texte
postNoteEvent.OnServerEvent:Connect(function(player, noteData)
local canPost, cooldown = canPlayerPost(player)
if not canPost then
postNoteEvent:FireClient(player, "cooldown", math.ceil(cooldown))
return
end
-- Tous les textes partagés publiquement doivent passer par un filtre de texte
local filterResult = getFilterResult(noteData.text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
-- Créer la note
local note = {
text = filteredText
}
-- Mettre à jour l'heure de la dernière publication
lastPostTime[player.UserId] = tick()
-- Envoyer la réponse de succès
postNoteEvent:FireClient(player, "success", note)
-- Diffuser la nouvelle note à tous les joueurs
postNoteEvent:FireAllClients("newNote", note)
else
warn("Erreur lors du filtrage du texte !")
end
end)
-- Nettoyer lorsque le joueur quitte
Players.PlayerRemoving:Connect(function(player)
lastPostTime[player.UserId] = nil
end)
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.