commit 824c25ce355e9d1eb8535bb07289e55ebd3e7084 Author: sys4-fr Date: Sat Sep 8 14:57:51 2018 +0200 Remplissage du dépôt. diff --git a/init.lua b/init.lua new file mode 100755 index 0000000..4972067 --- /dev/null +++ b/init.lua @@ -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)