Input teks dengan batasan laju

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Contoh ini menunjukkan cara menerapkan batasan laju 1 menit pada bidang input teks yang memungkinkan pemain mengirim catatan ke papan pengumuman komunitas.

Tambahkan yang berikut ke Script di ServerScriptService:

Server

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Buat RemoteEvent untuk komunikasi
local postNoteEvent = Instance.new("RemoteEvent")
postNoteEvent.Name = "PostNoteEvent"
postNoteEvent.Parent = ReplicatedStorage
-- Batasan laju satu catatan per menit per pemain
local COOLDOWN_TIME = 60 -- Waktu dalam detik
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
-- Tangani permintaan pos dengan batasan laju dan penyaringan teks
postNoteEvent.OnServerEvent:Connect(function(player, noteData)
local canPost, cooldown = canPlayerPost(player)
if not canPost then
postNoteEvent:FireClient(player, "cooldown", math.ceil(cooldown))
return
end
-- Semua teks yang dibagikan secara publik harus melewati penyaringan teks
local filterResult = getFilterResult(noteData.text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
-- Buat catatan
local note = {
text = filteredText
}
-- Perbarui waktu pos terakhir
lastPostTime[player.UserId] = tick()
-- Kirim respons sukses
postNoteEvent:FireClient(player, "success", note)
-- Siarkan catatan baru ke semua pemain
postNoteEvent:FireAllClients("newNote", note)
else
warn("Kesalahan saat menyaring teks!")
end
end)
-- Bersihkan saat pemain keluar
Players.PlayerRemoving:Connect(function(player)
lastPostTime[player.UserId] = nil
end)
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.