-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.lua
More file actions
129 lines (110 loc) · 4.44 KB
/
Copy pathclient.lua
File metadata and controls
129 lines (110 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
-- Configuration
local Config = {
afkTime = 300, -- Time in seconds before a player is considered AFK (5 minutes)
notificationInterval = 5, -- Interval in seconds between AFK notifications
warningNotification = true, -- Show a warning notification before being considered AFK
warningTime = 30, -- Seconds before AFK when to show warning
inputControl = true, -- Also controls player input, not just position
debugMode = false -- Debug mode to test the script
}
local isAFK = false
local lastActivity = 0
local lastPosition = vector3(0, 0, 0)
local lastHeading = 0
local lastInput = 0
-- Function to check if player is active
local function checkActivity()
local playerPed = PlayerPedId()
if not playerPed or not DoesEntityExist(playerPed) then return false end
local active = false
local currentPosition = GetEntityCoords(playerPed, true)
local currentHeading = GetEntityHeading(playerPed)
if #(currentPosition - lastPosition) > 0.5 or math.abs(currentHeading - lastHeading) > 1.0 then
active = true
end
if Config.inputControl then
if IsControlPressed(0, 32) or IsControlPressed(0, 33) or -- W, S
IsControlPressed(0, 34) or IsControlPressed(0, 35) or -- A, D
IsControlPressed(0, 24) or IsControlPressed(0, 25) then -- Attack, Aim
active = true
end
end
lastPosition = currentPosition
lastHeading = currentHeading
return active
end
-- Function to show AFK notification
local function showAFKNotification()
ExecuteCommand("me ~r~Player AFK~r~")
-- Display AFK notification using lib.notify
lib.notify({
id = 'ardenhub_afk',
title = 'AFK SYSTEM',
description = 'You are currently in AFK mode',
type = 'error',
duration = 5000,
position = 'top-right',
icon = 'user-clock',
iconColor = '#ff0000'
})
if Config.debugMode then
print("[AFK System] AFK notification sent")
end
end
Citizen.CreateThread(function()
while true do
Wait(1000)
local playerPed = PlayerPedId()
if playerPed and DoesEntityExist(playerPed) then
local active = checkActivity()
if active then
lastActivity = GetGameTimer()
if isAFK then
isAFK = false
if Config.debugMode then
print("[AFK System] No longer AFK")
end
end
else
local timePassed = (GetGameTimer() - lastActivity) / 1000
if Config.warningNotification and not isAFK and timePassed >= (Config.afkTime - Config.warningTime) then
-- Show warning notification using lib.notify
lib.notify({
id = 'ardenhub_afk_warning',
title = 'AFK SYSTEM',
description = 'You will be considered AFK in ' .. math.ceil(Config.afkTime - timePassed) .. ' seconds!',
type = 'warning',
duration = 4000,
position = 'top-right',
icon = 'triangle-exclamation',
iconColor = '#ffcc00'
})
end
if timePassed >= Config.afkTime then
if not isAFK then
isAFK = true
showAFKNotification()
if Config.debugMode then
print("[AFK System] Player now AFK")
end
else
if (timePassed % Config.notificationInterval) < 1 then
showAFKNotification()
end
end
end
end
end
end
end)
Citizen.CreateThread(function()
lastActivity = GetGameTimer()
local playerPed = PlayerPedId()
if playerPed then
lastPosition = GetEntityCoords(playerPed, true)
lastHeading = GetEntityHeading(playerPed)
end
if Config.debugMode then
print("[AFK System] Initialized - AFK Time: " .. Config.afkTime .. "s")
end
end)