Input di testo con limite di velocità

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Questo esempio mostra come implementare un limite di velocità di 1 minuto su un campo di input di testo che consente ai giocatori di pubblicare note su un forum della comunità.

Aggiungi quanto segue a un Script in ServerScriptService:

Server

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crea RemoteEvent per comunicazione
local postNoteEvent = Instance.new("RemoteEvent")
postNoteEvent.Name = "PostNoteEvent"
postNoteEvent.Parent = ReplicatedStorage
-- Limite di velocità di una nota al minuto per giocatore
local COOLDOWN_TIME = 60 -- Tempo in secondi
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
-- Gestisci le richieste di pubblicazione con limite di velocità e filtro di testo
postNoteEvent.OnServerEvent:Connect(function(player, noteData)
local canPost, cooldown = canPlayerPost(player)
if not canPost then
postNoteEvent:FireClient(player, "cooldown", math.ceil(cooldown))
return
end
-- Tutto il testo condiviso pubblicamente deve passare attraverso un filtro di testo
local filterResult = getFilterResult(noteData.text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
-- Crea la nota
local note = {
text = filteredText
}
-- Aggiorna l'ora dell'ultima pubblicazione
lastPostTime[player.UserId] = tick()
-- Invia la risposta di successo
postNoteEvent:FireClient(player, "success", note)
-- Trasmetti la nuova nota a tutti i giocatori
postNoteEvent:FireAllClients("newNote", note)
else
warn("Errore nel filtrare il testo!")
end
end)
-- Pulisci quando il giocatore esce
Players.PlayerRemoving:Connect(function(player)
lastPostTime[player.UserId] = nil
end)
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.