1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-02-09 13:37:02 +02:00

Merge pull request #48 from Gerkiz/dev

Minor changes
This commit is contained in:
Gerkiz 2019-07-07 11:58:03 +02:00 committed by GitHub
commit 9be4651eec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 69 deletions

View File

@ -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"})

View File

@ -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
)