Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

2 changed files with 28 additions and 32 deletions

View File

@ -11,36 +11,34 @@ local time_afk = { }
local last_pos = { } local last_pos = { }
local function check_moved() local function check_moved()
for _, p in ipairs(minetest.get_connected_players()) do for _, p in ipairs(minetest.get_connected_players()) do
local plname = p:get_player_name() local plname = p:get_player_name()
local pos = p:get_pos() local pos = p:getpos()
local kicked local kicked
if last_pos[plname] then if last_pos[plname] then
local d = vector.distance(last_pos[plname], pos) local d = vector.distance(last_pos[plname], pos)
--print("Player: "..plname..", Dist: "..d) --print("Player: "..plname..", Dist: "..d)
if d < MINDIST then if d < MINDIST then
time_afk[plname] = (time_afk[plname] or 0) + INTERVAL time_afk[plname] = (time_afk[plname] or 0) + INTERVAL
if time_afk[plname] >= TIMEOUT then if time_afk[plname] >= TIMEOUT then
minetest.kick_player(plname, "Inactive for "..TIMEOUT.." seconds.") minetest.kick_player(plname,
kicked = true "Inactive for "..TIMEOUT.." seconds.")
end kicked = true
else end
time_afk[plname] = 0 else
end time_afk[plname] = 0
end end
if not kicked then end
last_pos[plname] = pos if not kicked then
end last_pos[plname] = pos
end end
minetest.after(INTERVAL, check_moved) end
minetest.after(INTERVAL, check_moved)
end end
minetest.after(INTERVAL, check_moved) minetest.after(INTERVAL, check_moved)
minetest.register_on_leaveplayer( minetest.register_on_leaveplayer(function(player)
function(player) local plname = player:get_player_name()
local plname = player:get_player_name() time_afk[plname] = nil
time_afk[plname] = nil last_pos[plname] = nil
last_pos[plname] = nil end)
end)
minetest.log("action", "[player_inactive] loaded.")

View File

@ -1,2 +0,0 @@
name = player_inactive
description = Kick player if he does not move within 60 minutes