2018-11-18 18:12:00 +02:00
|
|
|
--[[-- info
|
|
|
|
Provides the ability to setup a player when first joined.
|
|
|
|
]]
|
|
|
|
|
|
|
|
-- dependencies
|
|
|
|
local Event = require 'utils.event'
|
|
|
|
local Global = require 'utils.global'
|
|
|
|
local CaveCollapse = require 'map_gen.Diggy.Feature.DiggyCaveCollapse'
|
|
|
|
local Game = require 'utils.game'
|
|
|
|
local Report = require 'features.report'
|
|
|
|
|
|
|
|
-- this
|
|
|
|
local Antigrief = {}
|
|
|
|
|
|
|
|
global.Antigrief = {
|
|
|
|
autojail = false,
|
|
|
|
jailed_players = {},
|
|
|
|
last_collapse = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
local allowed_collapses_first_hour = 0
|
|
|
|
|
|
|
|
local player_collapses = {}
|
|
|
|
|
|
|
|
Global.register({
|
|
|
|
cave_collapse_disabled = cave_collapse_disabled
|
|
|
|
}, function(tbl)
|
|
|
|
cave_collapse_disabled = tbl.cave_collapse_disabled
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
|
|
--[[--
|
|
|
|
Registers all event handlers.
|
|
|
|
]]
|
|
|
|
function Antigrief.register(config)
|
|
|
|
global.Antigrief.autojail = config.autojail
|
|
|
|
allowed_collapses_first_hour = config.allowed_collapses_first_hour
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
Event.add(CaveCollapse.events.on_collapse, function(event)
|
|
|
|
local player_index = event.player_index
|
|
|
|
if player_index and global.Antigrief.last_collapse ~= game.tick then
|
|
|
|
global.Antigrief.last_collapse = game.tick
|
|
|
|
local count = player_collapses[player_index] or 0
|
|
|
|
count = count + 1
|
|
|
|
player_collapses[player_index] = count
|
|
|
|
local player = Game.get_player_by_index(player_index)
|
|
|
|
if global.Antigrief.autojail and count > allowed_collapses_first_hour and player.online_time < 216000 and not global.Antigrief.jailed_players[player_index] then
|
|
|
|
Report.jail(player)
|
|
|
|
Report.report(nil, player, string.format("Caused %d collapses in the first hour", count))
|
|
|
|
global.Antigrief.jailed_players[player_index] = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
|
|
|
return Antigrief
|