Ograniczone wejścia tekstowe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Ten przykład pokazuje, jak wdrożyć ograniczenie prędkości wynoszące 1 minutę dla pola wejściowego tekstu, które pozwala graczom publikować notatki na tablicy ogłoszeń społeczności.

Dodaj następujący kod do Script w ServerScriptService:

Serwer

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Tworzenie RemoteEvent do komunikacji
local postNoteEvent = Instance.new("RemoteEvent")
postNoteEvent.Name = "PostNoteEvent"
postNoteEvent.Parent = ReplicatedStorage
-- Ograniczenie prędkości wynoszące jedną notatkę na minutę na gracza
local COOLDOWN_TIME = 60 -- Czas w sekundach
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
-- Obsługuje żądania publikacji z ograniczeniem prędkości i filtrowaniem tekstu
postNoteEvent.OnServerEvent:Connect(function(player, noteData)
local canPost, cooldown = canPlayerPost(player)
if not canPost then
postNoteEvent:FireClient(player, "cooldown", math.ceil(cooldown))
return
end
-- Wszystkie teksty udostępniane publicznie muszą przejść przez filtr tekstu
local filterResult = getFilterResult(noteData.text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
-- Tworzenie notatki
local note = {
text = filteredText
}
-- Aktualizacja czasu ostatniej publikacji
lastPostTime[player.UserId] = tick()
-- Wysyłanie odpowiedzi sukcesu
postNoteEvent:FireClient(player, "success", note)
-- Rozsyłanie nowej notatki do wszystkich graczy
postNoteEvent:FireAllClients("newNote", note)
else
warn("Błąd filtrowania tekstu!")
end
end)
-- Sprzątanie, gdy gracz opuszcza
Players.PlayerRemoving:Connect(function(player)
lastPostTime[player.UserId] = nil
end)
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.