Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How to track time warned in my warn system?

Hi,

In my game there's a warn system, and after 9 hours the warn goes away. I've already got it that a folder called 'Warns' appears in a player every time they join, and there are subfolders with the following values: The admin that warned them, the warn reason and the warn ID.

I need help with the wearing off bit, so that 9 hours later the warn gets deleted.

I've been looking for answers but nothing helped much.

2 comments

0

You could use os.time() to record the time in seconds.

0

or tick()

1 answer

This is not a request site, but I'll help.

Make sure this is a script, not a local script. If your warning system is a GUI, you can fire a remote event to this script. More information here.


local DataStoreService = game:GetService("DataStoreService")
local warnsystem = DataStoreService:GetDataStore("warnsystem")
game.Players.PlayerAdded:connect(function(plr)
        local system = Instance.new("Folder") -- making folder
        system.Name = system -- naming it system
        system.Parent = plr -- putting it inside of the player

        local secondsuntilunwarn = Instance.new("NumberValue") -- making a numbervalue
        secondsuntilunwarn.Name = secondsuntilunwarn -- naming it secondsuntilunwarn
        secondsuntilunwarn.Value = warnsystem:GetAsync(player.UserID) or 0 -- putting the value to the saved data or 0 if they have no data

        secondsuntilunwarn.Changed:Connect(function() -- if it changes
                warnsystem:SetAsync(player.UserID, secondsuntilunwarn.Value) -- save it
            end
        )
    end
)

--RemoteEvent (client to server)

game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(plr)-- make sure its located in replicated storage and you fired it from the client
        local target = os.time() + 32400 -- os.time + 9 hours in seconds --

        local function toHMS(s) --convert to hours, minutes, seconds, and format to 0 left-padded integers separated by colons.
            return ("i:i:i"):format(s / 3600, s / 60 % 60, s % 60) -- returning the format
        end

        plr.system.secondsuntilunwarn.Value = os.time() -- when the player is warn the secondsuntilwarn value becomes the os.time of that time

        local HMS_Until_Unwarn = (toHMS(target - plr.system.secondsuntilunwarn.Value))
     -- hours, minute seconds until unwarn
    end
)

What is os.time? os.time returns how many seconds have passed since the Unix epoch (1 January 1970, 00:00:00), under current UTC time. If provided a table formatted similarly to that returned by os.date, it will return the number of seconds since that time instead.

How can I fire client to server using remote events?

local RemoteEvent = game.ReplicatedStorage.RemoteEvent

RemoteEvent:FireServer(data) -- if you're doing this in the warning system makes the data /parameter player

This discussion is preserved as it was. New answers, comments, and votes are closed.