73 lines
1.8 KiB
Lua
73 lines
1.8 KiB
Lua
--[[
|
|
|
|
TechAge
|
|
=======
|
|
|
|
Copyright (C) 2019-2021 Joachim Stolberg
|
|
|
|
AGPL v3
|
|
See LICENSE.txt for more information
|
|
|
|
Count techage commands player related
|
|
|
|
]]--
|
|
|
|
local PlayerName
|
|
local PlayerPoints = {}
|
|
local LastPlayerPoints = {}
|
|
local S = techage.S
|
|
|
|
local MAX_POINTS = tonumber(minetest.settings:get("techage_command_limit")) or 1200
|
|
|
|
function techage.counting_start(player_name)
|
|
PlayerName = player_name
|
|
PlayerPoints[PlayerName] = PlayerPoints[PlayerName] or 0
|
|
end
|
|
|
|
function techage.counting_stop()
|
|
PlayerName = nil
|
|
end
|
|
|
|
function techage.counting_hit()
|
|
if PlayerName then
|
|
PlayerPoints[PlayerName] = PlayerPoints[PlayerName] + 1
|
|
end
|
|
end
|
|
|
|
function techage.counting_add(player_name, points)
|
|
PlayerPoints[player_name] = (PlayerPoints[player_name] or 0) + points
|
|
end
|
|
|
|
local function output()
|
|
for name, val in pairs(PlayerPoints) do
|
|
if val > MAX_POINTS then
|
|
local obj = minetest.get_player_by_name(name)
|
|
if obj then
|
|
minetest.chat_send_player(name,
|
|
S("[techage] The limit for 'number of commands per minute' has been exceeded.") ..
|
|
" " .. string.format(MAX_POINTS .. " " .. S("is allowed. Current value is") .. " " .. val));
|
|
minetest.log("action", "[techage] " .. name ..
|
|
" exceeds the limit for commands per minute. value = " .. val)
|
|
local factor = 100 / (obj:get_armor_groups().fleshy or 100)
|
|
obj:punch(obj, 1.0, {full_punch_interval=1.0, damage_groups = {fleshy=factor * 5}})
|
|
end
|
|
end
|
|
end
|
|
LastPlayerPoints = table.copy(PlayerPoints)
|
|
PlayerPoints = {}
|
|
minetest.after(60, output)
|
|
end
|
|
|
|
minetest.after(60, output)
|
|
|
|
|
|
minetest.register_chatcommand("ta_limit", {
|
|
description = "Get your current techage command limit value",
|
|
func = function(name)
|
|
local num = LastPlayerPoints[name] or 0
|
|
return true, S("Your current value is") .. " " .. num .. " " .. S("per minute") .. ". " ..
|
|
MAX_POINTS .. " " .. S("is allowed")
|
|
end
|
|
})
|
|
|