Run it
Copy the script and paste it into your executor.
-- // Libraries
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))()
local Window = Library.CreateLib(, )
Tab = Window:()
AFKsection = Tab:()
clientAFKLabel = AFKsection:()
serverAFKLabel = AFKsection:()
serverStatusLabel = AFKsection:()
Players = :()
UserInputService = :()
player = Players.LocalPlayer
lastActive = ()
clientAFKTime =
serverAFKTime =
serverAFKStart =
isAFKByServer =
(seconds)
minutes = .(seconds / )
secs = .(seconds % )
.(, minutes, secs)
UserInputService.InputBegan:(()
lastActive = ()
isAFKByServer
isAFKByServer =
serverAFKStart =
serverAFKTime =
serverStatusLabel:()
)
UserInputService.InputChanged:(()
lastActive = ()
isAFKByServer
isAFKByServer =
serverAFKStart =
serverAFKTime =
serverStatusLabel:()
)
player.Idled:((time)
isAFKByServer =
serverAFKStart = () - time
serverStatusLabel:()
.(()
isAFKByServer
serverAFKTime = () - serverAFKStart
serverAFKLabel:( .. (serverAFKTime))
.()
serverAFKLabel:()
)
)
.(()
clientAFKTime = () - lastActive
clientAFKLabel:( .. (clientAFKTime))
.()
)
Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: raw.githubusercontent.com.
(Actually, the server doesn't keep track of how long you're AFK; that's done by your own engine, but it doesn't start immediately after you go AFK, it starts 2 minutes later, which is why there are different counters) I want to clarify that I used chatgpt, but it didn't do everything. I created the script and then asked it to use the interface and take care of all the "pretty" stuff.

Universal