forked from mff/player_inactive
Remplissage du dépôt.
This commit is contained in:
commit
824c25ce35
44
init.lua
Executable file
44
init.lua
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
-- Interval between movement checks (in seconds).
|
||||||
|
local INTERVAL = 5
|
||||||
|
|
||||||
|
-- Minimum distance to move to register as not AFK (in blocks).
|
||||||
|
local MINDIST = 0.2
|
||||||
|
|
||||||
|
-- If player does not move within this time, kick player (in seconds).
|
||||||
|
local TIMEOUT = 3600 -- 60 minutes
|
||||||
|
|
||||||
|
local time_afk = { }
|
||||||
|
local last_pos = { }
|
||||||
|
|
||||||
|
local function check_moved()
|
||||||
|
for _, p in ipairs(minetest.get_connected_players()) do
|
||||||
|
local plname = p:get_player_name()
|
||||||
|
local pos = p:getpos()
|
||||||
|
local kicked
|
||||||
|
if last_pos[plname] then
|
||||||
|
local d = vector.distance(last_pos[plname], pos)
|
||||||
|
--print("Player: "..plname..", Dist: "..d)
|
||||||
|
if d < MINDIST then
|
||||||
|
time_afk[plname] = (time_afk[plname] or 0) + INTERVAL
|
||||||
|
if time_afk[plname] >= TIMEOUT then
|
||||||
|
minetest.kick_player(plname,
|
||||||
|
"Inactive for "..TIMEOUT.." seconds.")
|
||||||
|
kicked = true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
time_afk[plname] = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not kicked then
|
||||||
|
last_pos[plname] = pos
|
||||||
|
end
|
||||||
|
end
|
||||||
|
minetest.after(INTERVAL, check_moved)
|
||||||
|
end
|
||||||
|
minetest.after(INTERVAL, check_moved)
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
local plname = player:get_player_name()
|
||||||
|
time_afk[plname] = nil
|
||||||
|
last_pos[plname] = nil
|
||||||
|
end)
|
Loading…
Reference in New Issue
Block a user