mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-03-17 20:58:13 +02:00
New Admin Panel Module
This commit is contained in:
parent
92fa0a76df
commit
246520dfce
@ -1,11 +1,36 @@
|
||||
--antigrief things made by mewmew
|
||||
|
||||
local event = require 'utils.event'
|
||||
|
||||
local function jail(player)
|
||||
|
||||
local function create_admin_button(player)
|
||||
if player.gui.top["admin_button"] then return end
|
||||
local b = player.gui.top.add({type = "button", caption = "Admin", name = "admin_button"})
|
||||
b.style.font_color = {r = 0.95, g = 0.11, b = 0.11}
|
||||
b.style.font = "default-bold"
|
||||
b.style.minimal_height = 38
|
||||
b.style.minimal_width = 38
|
||||
b.style.top_padding = 2
|
||||
b.style.left_padding = 4
|
||||
b.style.right_padding = 4
|
||||
b.style.bottom_padding = 2
|
||||
end
|
||||
|
||||
local function free(player)
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
if player.admin == true then
|
||||
create_admin_button(player)
|
||||
end
|
||||
end
|
||||
|
||||
local function on_player_promoted(event)
|
||||
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]
|
||||
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)
|
||||
@ -41,7 +66,7 @@ local function on_player_ammo_inventory_changed(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function on_console_command(event)
|
||||
local function on_console_command(event)
|
||||
if event.command ~= "silent-command" then return end
|
||||
if not event.player_index then return end
|
||||
local player = game.players[event.player_index]
|
||||
@ -49,7 +74,7 @@ local function on_console_command(event)
|
||||
if p.admin == true and p.name ~= player.name then
|
||||
p.print(player.name .. " did a silent-command: " .. event.parameters, { r=0.22, g=0.99, b=0.99})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function on_player_built_tile(event)
|
||||
@ -60,7 +85,7 @@ local function on_player_built_tile(event)
|
||||
if placed_tiles[1].old_tile.name == "deepwater" or placed_tiles[1].old_tile.name == "water" or placed_tiles[1].old_tile.name == "water-green" then
|
||||
if not global.landfill_history then global.landfill_history = {} end
|
||||
if #global.landfill_history > 999 then global.landfill_history = {} end
|
||||
local str = player.name .. " placed landfill at X:"
|
||||
local str = player.name .. " at X:"
|
||||
str = str .. placed_tiles[1].position.x
|
||||
str = str .. " Y:"
|
||||
str = str .. placed_tiles[1].position.y
|
||||
@ -69,6 +94,8 @@ local function on_player_built_tile(event)
|
||||
end
|
||||
|
||||
local function on_built_entity(event)
|
||||
if game.tick < 1296000 then return end
|
||||
|
||||
if event.created_entity.type == "entity-ghost" then
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
@ -95,6 +122,9 @@ local function on_built_entity(event)
|
||||
end
|
||||
end
|
||||
|
||||
event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
event.add(defines.events.on_player_promoted, on_player_promoted)
|
||||
event.add(defines.events.on_player_demoted, on_player_demoted)
|
||||
event.add(defines.events.on_built_entity, on_built_entity)
|
||||
event.add(defines.events.on_player_built_tile, on_player_built_tile)
|
||||
event.add(defines.events.on_console_command, on_console_command)
|
||||
|
241
antigrief_admin_panel.lua
Normal file
241
antigrief_admin_panel.lua
Normal file
@ -0,0 +1,241 @@
|
||||
--antigrief things made by mewmew
|
||||
|
||||
local event = require 'utils.event'
|
||||
|
||||
local function admin_only_message(str)
|
||||
for _, player in pairs(game.connected_players) do
|
||||
if player.admin == true then
|
||||
player.print("Admins-only-message: " .. str, { r=0.88, g=0.88, b=0.88})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local jail_messages = {
|
||||
"You´re done bud!",
|
||||
"Busted!"
|
||||
}
|
||||
local function jail(player, source_player)
|
||||
local permission_group = game.permissions.get_group("prisoner")
|
||||
if not permission_group then
|
||||
permission_group = game.permissions.create_group("prisoner")
|
||||
for action_name, _ in pairs(defines.input_action) do
|
||||
permission_group.set_allows_action(defines.input_action[action_name], false)
|
||||
end
|
||||
permission_group.set_allows_action(defines.input_action.write_to_console, true)
|
||||
permission_group.set_allows_action(defines.input_action.gui_click, true)
|
||||
end
|
||||
permission_group.add_player(player.name)
|
||||
game.print(player.name .. " has been jailed. " .. jail_messages[math.random(1, #jail_messages)], { r=0.98, g=0.66, b=0.22})
|
||||
admin_only_message(player.name .. " was jailed by " .. source_player.name)
|
||||
end
|
||||
|
||||
local freedom_messages = {
|
||||
"Yaay!",
|
||||
"Welcome back!"
|
||||
}
|
||||
local function free(player, source_player)
|
||||
local permission_group = game.permissions.get_group("Default")
|
||||
permission_group.add_player(player.name)
|
||||
game.print(player.name .. " was set free from jail. " .. freedom_messages[math.random(1, #freedom_messages)], { r=0.98, g=0.66, b=0.22})
|
||||
admin_only_message(source_player.name .. " set " .. player.name .. " free from jail")
|
||||
end
|
||||
|
||||
local bring_player_messages = {
|
||||
"Come here my friend!",
|
||||
"Papers, please.",
|
||||
"What are you up to?"
|
||||
}
|
||||
local function bring_player(player, source_player)
|
||||
local pos = source_player.surface.find_non_colliding_position("player", source_player.position, 50, 1)
|
||||
if pos then
|
||||
player.teleport(pos, source_player.surface)
|
||||
game.print(player.name .. " has been teleported to " .. source_player.name .. ". " .. bring_player_messages[math.random(1, #bring_player_messages)], { r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
|
||||
local go_to_player_messages = {
|
||||
"Papers, please.",
|
||||
"What are you up to?"
|
||||
}
|
||||
local function go_to_player(player, source_player)
|
||||
local pos = player.surface.find_non_colliding_position("player", player.position, 50, 1)
|
||||
if pos then
|
||||
source_player.teleport(pos, player.surface)
|
||||
game.print(source_player.name .. " is visiting " .. player.name .. ". " .. go_to_player_messages[math.random(1, #go_to_player_messages)], { r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
|
||||
local function spank(player, source_player)
|
||||
if player.character then
|
||||
if player.character.health > 1 then player.character.damage(1, "player") end
|
||||
player.character.health = player.character.health - 5
|
||||
player.surface.create_entity({name = "water-splash", position = player.position})
|
||||
game.print(source_player.name .. " spanked " .. player.name, { r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
|
||||
local damage_messages = {
|
||||
" recieved a love letter from ",
|
||||
" recieved a strange package from "
|
||||
}
|
||||
local function damage(player, source_player)
|
||||
if player.character then
|
||||
if player.character.health > 1 then player.character.damage(1, "player") end
|
||||
player.character.health = player.character.health - 125
|
||||
player.surface.create_entity({name = "big-explosion", position = player.position})
|
||||
game.print(player.name .. damage_messages[math.random(1, #damage_messages)] .. source_player.name, { r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
|
||||
local kill_messages = {
|
||||
" did not obey the law.",
|
||||
" should not have triggered the admins.",
|
||||
" did not respect authority.",
|
||||
" had a strange accident.",
|
||||
" was struck by lightning."
|
||||
}
|
||||
local function kill(player, source_player)
|
||||
if player.character then
|
||||
player.character.die("player")
|
||||
game.print(player.name .. kill_messages[math.random(1, #kill_messages)], { r=0.98, g=0.66, b=0.22})
|
||||
admin_only_message(source_player.name .. " killed " .. player.name)
|
||||
end
|
||||
end
|
||||
|
||||
local enemy_messages = {
|
||||
"Shoot on sight!",
|
||||
"Wanted dead or alive!"
|
||||
}
|
||||
local function enemy(player, source_player)
|
||||
if not game.forces.enemy_players then game.create_force("enemy_players") end
|
||||
player.force = game.forces.enemy_players
|
||||
game.print(player.name .. " is now an enemy! " .. enemy_messages[math.random(1, #enemy_messages)], {r=0.95, g=0.15, b=0.15})
|
||||
admin_only_message(source_player.name .. " has turned " .. player.name .. " into an enemy")
|
||||
end
|
||||
|
||||
local function ally(player, source_player)
|
||||
player.force = game.forces.player
|
||||
game.print(player.name .. " is our ally again!", {r=0.98, g=0.66, b=0.22})
|
||||
admin_only_message(source_player.name .. " made " .. player.name .. " our ally")
|
||||
end
|
||||
|
||||
local function turn_off_global_speakers(player, source_player)
|
||||
local speakers = source_player.surface.find_entities_filtered({name = "programmable-speaker"})
|
||||
local counter = 0
|
||||
for i, speaker in pairs(speakers) do
|
||||
if speaker.parameters.playback_globally == true then
|
||||
speaker.surface.create_entity({name = "massive-explosion", position = speaker.position})
|
||||
speaker.die("player")
|
||||
counter = counter + 1
|
||||
end
|
||||
end
|
||||
if counter == 0 then return end
|
||||
if counter == 1 then
|
||||
game.print(source_player.name .. " has nuked " .. counter .. " global speaker.", { r=0.98, g=0.66, b=0.22})
|
||||
else
|
||||
game.print(source_player.name .. " has nuked " .. counter .. " global speakers.", { r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
|
||||
local function create_admin_panel(player)
|
||||
if player.gui.left["admin_panel"] then player.gui.left["admin_panel"].destroy() end
|
||||
|
||||
local player_names = {}
|
||||
for _, p in pairs(game.connected_players) do
|
||||
--if player.name ~= p.name then
|
||||
table.insert(player_names, p.name)
|
||||
--end
|
||||
end
|
||||
|
||||
local frame = player.gui.left.add({type = "frame", name = "admin_panel", direction = "vertical"})
|
||||
|
||||
local l = frame.add({type = "label", caption = "Select Player:"})
|
||||
l.style.font = "default-listbox"
|
||||
l.style.font_color = { r=0.98, g=0.66, b=0.22}
|
||||
|
||||
|
||||
local drop_down = frame.add({type = "drop-down", name = "admin_player_select", items = player_names, selected_index = #player_names})
|
||||
drop_down.style.right_padding = 12
|
||||
drop_down.style.left_padding = 12
|
||||
|
||||
local t = frame.add({type = "table", column_count = 3})
|
||||
local buttons = {
|
||||
t.add({type = "button", caption = "Jail", name = "jail", tooltip = "Jails the player, they will no longer be able to perform any actions except writing in chat."}),
|
||||
t.add({type = "button", caption = "Free", name = "free", tooltip = "Frees the player from jail."}),
|
||||
t.add({type = "button", caption = "Bring Player", name = "bring_player", tooltip = "Teleports the selected player to your position."}),
|
||||
t.add({type = "button", caption = "Make Enemy", name = "enemy", tooltip = "Sets the selected players force to enemy_players. DO NOT USE IN PVP MAPS!!"}),
|
||||
t.add({type = "button", caption = "Make Ally", name = "ally", tooltip = "Sets the selected players force back to the default player force. DO NOT USE IN PVP MAPS!!"}),
|
||||
t.add({type = "button", caption = "Go to Player", name = "go_to_player", tooltip = "Teleport yourself to the selected player."}),
|
||||
t.add({type = "button", caption = "Spank", name = "spank", tooltip = "Hurts the selected player with minor damage. Can not kill the player."}),
|
||||
t.add({type = "button", caption = "Damage", name = "damage", tooltip = "Damages the selected player with greater damage. Can not kill the player."}),
|
||||
t.add({type = "button", caption = "Kill", name = "kill", tooltip = "Kills the selected player instantly."})
|
||||
|
||||
}
|
||||
for _, button in pairs(buttons) do
|
||||
button.style.font = "default-bold"
|
||||
button.style.font_color = { r=0.99, g=0.11, b=0.11}
|
||||
button.style.minimal_width = 96
|
||||
end
|
||||
|
||||
local l = frame.add({type = "label", caption = "----------------------------------------------"})
|
||||
local l = frame.add({type = "label", caption = "Global Actions:"})
|
||||
local t = frame.add({type = "table", column_count = 3})
|
||||
local buttons = {
|
||||
t.add({type = "button", caption = "Nuke all Global Speakers", name = "turn_off_global_speakers"})
|
||||
}
|
||||
for _, button in pairs(buttons) do
|
||||
button.style.font = "default-bold"
|
||||
button.style.font_color = { r=0.98, g=0.66, b=0.22}
|
||||
button.style.minimal_width = 80
|
||||
end
|
||||
|
||||
if global.landfill_history then
|
||||
local l = frame.add({type = "label", caption = "----------------------------------------------"})
|
||||
local l = frame.add({type = "label", caption = "Landfill History:"})
|
||||
l.style.font = "default-listbox"
|
||||
l.style.font_color = { r=0.98, g=0.66, b=0.22}
|
||||
local scroll_pane = frame.add({ type = "scroll-pane", direction = "vertical", horizontal_scroll_policy = "never", vertical_scroll_policy = "auto"})
|
||||
scroll_pane.style.maximal_height = 160
|
||||
for i = #global.landfill_history, 1, -1 do
|
||||
scroll_pane.add({type = "label", caption = global.landfill_history[i]})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local admin_functions = {
|
||||
["jail"] = jail,
|
||||
["free"] = free,
|
||||
["bring_player"] = bring_player,
|
||||
["spank"] = spank,
|
||||
["damage"] = damage,
|
||||
["kill"] = kill,
|
||||
["turn_off_global_speakers"] = turn_off_global_speakers,
|
||||
["enemy"] = enemy,
|
||||
["ally"] = ally,
|
||||
["go_to_player"] = go_to_player
|
||||
}
|
||||
|
||||
local function on_gui_click(event)
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
local name = event.element.name
|
||||
if name == "admin_button" then
|
||||
if player.gui.left["admin_panel"] then
|
||||
player.gui.left["admin_panel"].destroy()
|
||||
else
|
||||
create_admin_panel(player)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if admin_functions[name] then
|
||||
local target_player_name = player.gui.left["admin_panel"]["admin_player_select"].items[player.gui.left["admin_panel"]["admin_player_select"].selected_index]
|
||||
if not target_player_name then return end
|
||||
local target_player = game.players[target_player_name]
|
||||
if target_player.connected == true then
|
||||
admin_functions[name](target_player, player)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
event.add(defines.events.on_gui_click, on_gui_click)
|
@ -3,19 +3,20 @@ require "utils.corpse_util"
|
||||
require "bot"
|
||||
require "session_tracker"
|
||||
require "antigrief"
|
||||
require "antigrief_admin_panel"
|
||||
require "group"
|
||||
require "player_list"
|
||||
require "poll"
|
||||
require "score"
|
||||
|
||||
--require "maps.tools.cheat_mode"
|
||||
require "maps.tools.cheat_mode"
|
||||
|
||||
---- enable maps here ----
|
||||
require "maps.biter_battles"
|
||||
--require "maps.biter_battles"
|
||||
--require "maps.cave_miner"
|
||||
--require "maps.deep_jungle"
|
||||
--require "maps.lost_desert"
|
||||
--require "maps.labyrinth"
|
||||
require "maps.labyrinth"
|
||||
--require "maps.spaghettorio"
|
||||
--require "maps.spiral_troopers"
|
||||
--require "maps.fish_defender"
|
||||
|
@ -101,7 +101,7 @@ worm_raffle[7] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turre
|
||||
worm_raffle[8] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret"}
|
||||
worm_raffle[9] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret", "big-worm-turret"}
|
||||
worm_raffle[10] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret", "big-worm-turret"}
|
||||
local rock_raffle = {"sand-rock-big","sand-rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-huge"}
|
||||
local rock_raffle = {"sand-rock-big","sand-rock-big", "rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-huge"}
|
||||
local ore_spawn_raffle = {"iron-ore","iron-ore","iron-ore","iron-ore","iron-ore","copper-ore","copper-ore","copper-ore","coal","coal","stone","stone","uranium-ore","crude-oil"}
|
||||
local room_layouts = {"quad_rocks", "single_center_rock", "three_horizontal_rocks", "three_vertical_rocks", "tree_and_lake", "forest", "forest_fence"}
|
||||
local biter_raffle = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user