mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-09 13:37:02 +02:00
commit
9be4651eec
@ -1,7 +1,12 @@
|
||||
-- luacheck: ignore
|
||||
--antigrief things made by mewmew
|
||||
--as an admin, write trust/untrust and the players name in the chat to grant/revoke immunity from protection
|
||||
--modified by gerkiz--
|
||||
--as an admin, write either /trust or /untrust and the players name in the chat to grant/revoke immunity from protection
|
||||
|
||||
local event = require 'utils.event'
|
||||
local session = require 'utils.session_data'
|
||||
local tracker = session.get_session_table()
|
||||
local trusted = session.get_trusted_table()
|
||||
|
||||
local function create_admin_button(player)
|
||||
if player.gui.top["admin_button"] then return end
|
||||
@ -16,48 +21,34 @@ local function create_admin_button(player)
|
||||
b.style.bottom_padding = 2
|
||||
end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not global.trusted_players then global.trusted_players = {} end
|
||||
if not global.trusted_players[player.name] then global.trusted_players[player.name] = false end
|
||||
if player.admin == true then
|
||||
create_admin_button(player)
|
||||
end
|
||||
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
end
|
||||
end
|
||||
if playtime > 2592000 then
|
||||
global.trusted_players[player.name] = true
|
||||
end
|
||||
end
|
||||
|
||||
local function on_player_promoted(event)
|
||||
local player = game.players[event.player_index]
|
||||
local player = game.players[event.player_index]
|
||||
create_admin_button(player)
|
||||
end
|
||||
|
||||
local function on_player_demoted(event)
|
||||
local player = game.players[event.player_index]
|
||||
local player = game.players[event.player_index]
|
||||
if player.gui.top["admin_button"] then player.gui.top["admin_button"].destroy() end
|
||||
if player.gui.left["admin_panel"] then player.gui.left["admin_panel"].destroy() end
|
||||
end
|
||||
|
||||
local function on_marked_for_deconstruction(event)
|
||||
if not event.player_index then return end
|
||||
local player = game.players[event.player_index]
|
||||
local player = game.players[event.player_index]
|
||||
if player.admin == true then return end
|
||||
if global.trusted_players[player.name] == true then return end
|
||||
|
||||
if trusted[player.name] == true then return end
|
||||
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
if tracker[player.name] then
|
||||
playtime = player.online_time + tracker[player.name]
|
||||
end
|
||||
end
|
||||
if playtime < 2592000 then
|
||||
event.entity.cancel_deconstruction(game.players[event.player_index].force.name)
|
||||
player.print("You have not grown accustomed to this technology yet.", { r=0.22, g=0.99, b=0.99})
|
||||
@ -67,14 +58,12 @@ end
|
||||
local function on_player_ammo_inventory_changed(event)
|
||||
local player = game.players[event.player_index]
|
||||
if player.admin == true then return end
|
||||
if global.trusted_players[player.name] == true then return end
|
||||
|
||||
if trusted[player.name] == true then return end
|
||||
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
end
|
||||
end
|
||||
if tracker[player.name] then
|
||||
playtime = player.online_time + tracker[player.name]
|
||||
end
|
||||
if playtime < 1296000 then
|
||||
local nukes = player.remove_item({name="atomic-bomb", count=1000})
|
||||
if nukes > 0 then
|
||||
@ -89,27 +78,25 @@ local function on_player_built_tile(event)
|
||||
local placed_tiles = event.tiles
|
||||
if placed_tiles[1].old_tile.name ~= "deepwater" and placed_tiles[1].old_tile.name ~= "water" and placed_tiles[1].old_tile.name ~= "water-green" then return end
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
--[[
|
||||
if not player.admin and not global.trusted_players[player.name] then
|
||||
|
||||
--[[
|
||||
if not player.admin and not trusted[player.name] then
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
end
|
||||
end
|
||||
if tracker[player.name] then
|
||||
playtime = player.online_time + tracker[player.name][1]
|
||||
end
|
||||
if playtime < 648000 then
|
||||
local tiles = {}
|
||||
for _, t in pairs(placed_tiles) do
|
||||
table.insert(tiles, {name = t.old_tile.name, position = t.position})
|
||||
end
|
||||
for _, t in pairs(placed_tiles) do
|
||||
table.insert(tiles, {name = t.old_tile.name, position = t.position})
|
||||
end
|
||||
player.insert({name = "landfill", count = #placed_tiles})
|
||||
player.surface.set_tiles(tiles, true)
|
||||
player.surface.set_tiles(tiles, true)
|
||||
player.print("You have not grown accustomed to this technology yet.", { r=0.22, g=0.99, b=0.99})
|
||||
end
|
||||
end]]
|
||||
|
||||
--landfill history--
|
||||
|
||||
--landfill history--
|
||||
if not global.landfill_history then global.landfill_history = {} end
|
||||
if #global.landfill_history > 999 then global.landfill_history = {} end
|
||||
local str = player.name .. " at X:"
|
||||
@ -126,13 +113,11 @@ local function on_built_entity(event)
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
if player.admin == true then return end
|
||||
if global.trusted_players[player.name] == true then return end
|
||||
if trusted[player.name] == true then return end
|
||||
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
end
|
||||
if tracker[player.name] then
|
||||
playtime = player.online_time + tracker[player.name]
|
||||
end
|
||||
|
||||
if playtime < 432000 then
|
||||
@ -150,12 +135,10 @@ local function on_player_used_capsule(event)
|
||||
if used_item.name ~= "artillery-targeting-remote" then return end
|
||||
|
||||
local playtime = player.online_time
|
||||
if global.player_totals then
|
||||
if global.player_totals[player.name] then
|
||||
playtime = player.online_time + global.player_totals[player.name][1]
|
||||
end
|
||||
end
|
||||
if playtime < 1296000 and player.admin == false and global.trusted_players[player.name] == false then
|
||||
if tracker[player.name] then
|
||||
playtime = player.online_time + tracker[player.name]
|
||||
end
|
||||
if playtime < 1296000 and player.admin == false and trusted[player.name] == false then
|
||||
player.print("You have not grown accustomed to this technology yet.", { r=0.22, g=0.99, b=0.99})
|
||||
local area = {{position.x - 1, position.y - 1},{position.x + 1, position.y + 1}}
|
||||
local entities = player.surface.find_entities_filtered({area = area, name = "artillery-flare"})
|
||||
|
@ -12,17 +12,22 @@ local raw_print = Print.raw_print
|
||||
local session_data_set = 'sessions'
|
||||
local session = {}
|
||||
local online_track = {}
|
||||
local trusted = {}
|
||||
local set_data = Server.set_data
|
||||
local try_get_data = Server.try_get_data
|
||||
local concat = table.concat
|
||||
local nth_tick = 54001 -- nearest prime to 15 minutes in ticks
|
||||
|
||||
Global.register({
|
||||
Global.register(
|
||||
{
|
||||
session=session,
|
||||
online_track=online_track},
|
||||
online_track=online_track,
|
||||
trusted=trusted
|
||||
},
|
||||
function(tbl)
|
||||
session = tbl.session
|
||||
online_track = tbl.online_track
|
||||
trusted = tbl.trusted
|
||||
end
|
||||
)
|
||||
|
||||
@ -44,29 +49,33 @@ local fetch =
|
||||
local value = data.value
|
||||
if value then
|
||||
session[key] = value
|
||||
if value > 2592000 then
|
||||
trusted[key] = true
|
||||
end
|
||||
else
|
||||
session[key] = 0
|
||||
trusted[key] = false
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
local function tick()
|
||||
for _, p in pairs(game.connected_players) do
|
||||
Public.send(p, p.name)
|
||||
Public.send(p)
|
||||
end
|
||||
end
|
||||
|
||||
--- Tries to get data from the webpanel and updates the dataset with values.
|
||||
-- @param player name
|
||||
function Public.send(player, name)
|
||||
if not online_track[name] then
|
||||
online_track[name] = 0
|
||||
-- @param player
|
||||
function Public.send(player)
|
||||
if not online_track[player.name] then
|
||||
online_track[player.name] = 0
|
||||
end
|
||||
if session[name] then
|
||||
local old_time = session[name]
|
||||
local new_time = old_time + player.online_time - online_track[name]
|
||||
set_data(session_data_set, name, new_time)
|
||||
online_track[name] = player.online_time
|
||||
if session[player.name] then
|
||||
local old_time = session[player.name]
|
||||
local new_time = old_time + player.online_time - online_track[player.name]
|
||||
set_data(session_data_set, player.name, new_time)
|
||||
online_track[player.name] = player.online_time
|
||||
end
|
||||
end
|
||||
|
||||
@ -107,6 +116,12 @@ function Public.get_tracker_table()
|
||||
return online_track
|
||||
end
|
||||
|
||||
--- Returns the table of trusted
|
||||
-- @return <table>
|
||||
function Public.get_trusted_table()
|
||||
return trusted
|
||||
end
|
||||
|
||||
Event.add(
|
||||
defines.events.on_player_joined_game,
|
||||
function(event)
|
||||
@ -116,7 +131,7 @@ Event.add(
|
||||
end
|
||||
if game.is_multiplayer() then
|
||||
Public.fetch(player.name)
|
||||
Public.send(player, player.name)
|
||||
Public.send(player)
|
||||
else
|
||||
session[player.name] = player.online_time
|
||||
end
|
||||
@ -131,7 +146,7 @@ Event.add(
|
||||
return
|
||||
end
|
||||
if game.is_multiplayer() then
|
||||
Public.send(player, player.name)
|
||||
Public.send(player)
|
||||
end
|
||||
end
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user