73 lines
		
	
	
		
			No EOL
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			No EOL
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local QBCore = exports['qb-core']:GetCoreObject()
 | |
| local isLoggedIn = LocalPlayer.state.isLoggedIn
 | |
| local checkUser = true
 | |
| local prevPos, time = nil, nil
 | |
| local timeMinutes = {
 | |
|     ['900'] = 'minutes',
 | |
|     ['600'] = 'minutes',
 | |
|     ['300'] = 'minutes',
 | |
|     ['150'] = 'minutes',
 | |
|     ['60'] = 'minutes',
 | |
|     ['30'] = 'seconds',
 | |
|     ['20'] = 'seconds',
 | |
|     ['10'] = 'seconds',
 | |
| }
 | |
| 
 | |
| local function updatePermissionLevel()
 | |
|     QBCore.Functions.TriggerCallback('qb-afkkick:server:GetPermissions', function(userGroups)
 | |
|         for k in pairs(userGroups) do
 | |
|             if Config.AFK.ignoredGroups[k] then
 | |
|                 checkUser = false
 | |
|                 break
 | |
|             end
 | |
|             checkUser = true
 | |
|         end
 | |
|     end)
 | |
| end
 | |
| 
 | |
| RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
 | |
|     updatePermissionLevel()
 | |
|     isLoggedIn = true
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent('QBCore:Client:OnPlayerUnload', function()
 | |
|     isLoggedIn = false
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent('QBCore:Client:OnPermissionUpdate', function()
 | |
|     updatePermissionLevel()
 | |
| end)
 | |
| 
 | |
| CreateThread(function()
 | |
|     while true do
 | |
|         Wait(10000)
 | |
|         local ped = PlayerPedId()
 | |
|         if isLoggedIn == true or Config.AFK.kickInCharMenu == true then
 | |
|             if checkUser then
 | |
|                 local currPos = GetEntityCoords(ped, true)
 | |
|                 if prevPos then
 | |
|                     if currPos == prevPos then
 | |
|                         if time then
 | |
|                             if time > 0 then
 | |
|                                 local _type = timeMinutes[tostring(time)]
 | |
|                                 if _type == 'minutes' then
 | |
|                                     QBCore.Functions.Notify(Lang:t('afk.will_kick') .. math.ceil(time / 60) .. Lang:t('afk.time_minutes'), 'error', 10000)
 | |
|                                 elseif _type == 'seconds' then
 | |
|                                     QBCore.Functions.Notify(Lang:t('afk.will_kick') .. time .. Lang:t('afk.time_seconds'), 'error', 10000)
 | |
|                                 end
 | |
|                                 time -= 10
 | |
|                             else
 | |
|                                 TriggerServerEvent('KickForAFK')
 | |
|                             end
 | |
|                         else
 | |
|                             time = Config.AFK.secondsUntilKick
 | |
|                         end
 | |
|                     else
 | |
|                         time = Config.AFK.secondsUntilKick
 | |
|                     end
 | |
|                 end
 | |
|                 prevPos = currPos
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| end) | 
