local AFK = {}
function getAFKTableSize(t)
local count = 0
if t and type(t) == "table" then
for k in next,t do
if isElement(k) then
count = count + 1
end
end
end
return count
end
function playerDataChanges(data)
if data == "afk_state" then
local value = getElementData(source,data)
if value == "afk" then
if getAFKTableSize(AFK) == 0 then
addEventHandler("onClientRender",root,Render)
end
AFK[source] = true
elseif value == "back" then
AFK[source] = nil
if getAFKTableSize(AFK) == 0 then
removeEventHandler("onClientRender",root,Render)
end
end
end
end
addEventHandler("onClientElementDataChange",root,playerDataChanges)
function Render()
for player in next,AFK do
if isElement(player) then
local myPos = {getElementPosition(localPlayer)}
local head = {getPedBonePosition(player,8)}
if getDistanceBetweenPoints3D(myPos[1],myPos[2],myPos[3],head[1],head[2],head[3]) <= 30 then
local x,y = getScreenFromWorldPosition(head[1],head[2],head[3]+0.3)
if x and y then
dxDrawText("AFK",x,y,x,y,tocolor(255,255,255,255),2,"sans","center","center")
end
end
end
end
end
Client side