2019-11-01 18:55:10 +02:00
local Session = require ' utils.session_data '
2019-11-10 23:02:45 +02:00
local Modifiers = require ' player_modifiers '
local Server = require ' utils.server '
local Color = require ' utils.color_presets '
2019-11-01 18:55:10 +02:00
2019-10-28 00:22:47 +02:00
commands.add_command (
' spaghetti ' ,
' Does spaghett. ' ,
function ( cmd )
2019-11-10 23:02:45 +02:00
local p_modifer = Modifiers.get_table ( )
2019-10-28 00:22:47 +02:00
local player = game.player
2019-11-10 23:02:45 +02:00
local _a = p_modifer
2019-11-01 18:55:10 +02:00
local param = tostring ( cmd.parameter )
2019-10-28 00:22:47 +02:00
local force = game.forces [ " player " ]
local p
if player then
if player ~= nil then
p = player.print
if not player.admin then
2019-11-10 23:02:45 +02:00
p ( " [ERROR] You're not admin! " , Color.fail )
2019-10-28 00:22:47 +02:00
return
end
else
p = log
end
end
2019-11-10 23:02:45 +02:00
if param == nil then player.print ( " [ERROR] Arguments are true/false " , Color.yellow ) return end
2019-11-01 18:55:10 +02:00
if param == " true " then
2019-11-10 23:02:45 +02:00
if not _a.spaghetti_are_you_sure then
_a.spaghetti_are_you_sure = true
player.print ( " Spaghetti is not enabled, run this command again to enable spaghett " , Color.yellow )
return
end
if _a.spaghetti_enabled == true then player.print ( " Spaghetti is already enabled. " , Color.yellow ) return end
game.print ( " The world has been spaghettified! " , Color.success )
2019-10-28 00:22:47 +02:00
force.technologies [ " logistic-system " ] . enabled = false
force.technologies [ " construction-robotics " ] . enabled = false
force.technologies [ " logistic-robotics " ] . enabled = false
force.technologies [ " robotics " ] . enabled = false
force.technologies [ " personal-roboport-equipment " ] . enabled = false
force.technologies [ " personal-roboport-mk2-equipment " ] . enabled = false
force.technologies [ " character-logistic-trash-slots-1 " ] . enabled = false
force.technologies [ " character-logistic-trash-slots-2 " ] . enabled = false
force.technologies [ " auto-character-logistic-trash-slots " ] . enabled = false
force.technologies [ " worker-robots-storage-1 " ] . enabled = false
force.technologies [ " worker-robots-storage-2 " ] . enabled = false
force.technologies [ " worker-robots-storage-3 " ] . enabled = false
force.technologies [ " character-logistic-slots-1 " ] . enabled = false
force.technologies [ " character-logistic-slots-2 " ] . enabled = false
force.technologies [ " character-logistic-slots-3 " ] . enabled = false
force.technologies [ " character-logistic-slots-4 " ] . enabled = false
force.technologies [ " character-logistic-slots-5 " ] . enabled = false
force.technologies [ " character-logistic-slots-6 " ] . enabled = false
force.technologies [ " worker-robots-speed-1 " ] . enabled = false
force.technologies [ " worker-robots-speed-2 " ] . enabled = false
force.technologies [ " worker-robots-speed-3 " ] . enabled = false
force.technologies [ " worker-robots-speed-4 " ] . enabled = false
force.technologies [ " worker-robots-speed-5 " ] . enabled = false
force.technologies [ " worker-robots-speed-6 " ] . enabled = false
2019-11-10 23:02:45 +02:00
_a.spaghetti_enabled = true
2019-11-01 18:55:10 +02:00
elseif param == " false " then
2019-11-10 23:02:45 +02:00
if _a.spaghetti_enabled == false or _a.spaghetti_enabled == nil then player.print ( " Spaghetti is already disabled. " , Color.yellow ) return end
game.print ( " The world is no longer spaghett! " , Color.yellow )
2019-10-28 00:42:50 +02:00
force.technologies [ " logistic-system " ] . enabled = true
force.technologies [ " construction-robotics " ] . enabled = true
force.technologies [ " logistic-robotics " ] . enabled = true
force.technologies [ " robotics " ] . enabled = true
force.technologies [ " personal-roboport-equipment " ] . enabled = true
force.technologies [ " personal-roboport-mk2-equipment " ] . enabled = true
force.technologies [ " character-logistic-trash-slots-1 " ] . enabled = true
force.technologies [ " character-logistic-trash-slots-2 " ] . enabled = true
force.technologies [ " auto-character-logistic-trash-slots " ] . enabled = true
force.technologies [ " worker-robots-storage-1 " ] . enabled = true
force.technologies [ " worker-robots-storage-2 " ] . enabled = true
force.technologies [ " worker-robots-storage-3 " ] . enabled = true
force.technologies [ " character-logistic-slots-1 " ] . enabled = true
force.technologies [ " character-logistic-slots-2 " ] . enabled = true
force.technologies [ " character-logistic-slots-3 " ] . enabled = true
force.technologies [ " character-logistic-slots-4 " ] . enabled = true
force.technologies [ " character-logistic-slots-5 " ] . enabled = true
force.technologies [ " character-logistic-slots-6 " ] . enabled = true
force.technologies [ " worker-robots-speed-1 " ] . enabled = true
force.technologies [ " worker-robots-speed-2 " ] . enabled = true
force.technologies [ " worker-robots-speed-3 " ] . enabled = true
force.technologies [ " worker-robots-speed-4 " ] . enabled = true
force.technologies [ " worker-robots-speed-5 " ] . enabled = true
force.technologies [ " worker-robots-speed-6 " ] . enabled = true
2019-11-10 23:02:45 +02:00
_a.spaghetti_enabled = false
2019-02-14 16:44:12 +02:00
end
2019-10-28 00:22:47 +02:00
end )
commands.add_command (
' generate_map ' ,
' Pregenerates map. ' ,
function ( cmd )
2019-11-10 23:02:45 +02:00
local p_modifer = Modifiers.get_table ( )
local _a = p_modifer
2019-10-28 00:22:47 +02:00
local player = game.player
2019-11-01 18:55:10 +02:00
local param = tonumber ( cmd.parameter )
2019-10-28 00:22:47 +02:00
local p
if player then
if player ~= nil then
p = player.print
if not player.admin then
2019-11-10 23:02:45 +02:00
p ( " [ERROR] You're not admin! " , Color.fail )
2019-10-28 00:22:47 +02:00
return
end
else
p = log
end
end
2019-11-10 23:02:45 +02:00
if param == nil then player.print ( " [ERROR] Must specify radius! " , Color.fail ) return end
2019-11-10 23:12:25 +02:00
if param > 50 then player.print ( " [ERROR] Value is too big. " , Color.fail ) return end
2019-11-10 23:02:45 +02:00
if not _a.generate_map then
_a.generate_map = true
player.print ( " [WARNING] This command will make the server LAG, run this command again if you really want to do this! " , Color.yellow )
return
end
2019-11-01 18:55:10 +02:00
local radius = param
2019-10-28 00:22:47 +02:00
local surface = game.players [ 1 ] . surface
if surface.is_chunk_generated ( { radius , radius } ) then
2019-11-10 23:02:45 +02:00
game.print ( " Map generation done! " , Color.success )
_a.generate_map = nil
2019-10-28 00:22:47 +02:00
return
end
surface.request_to_generate_chunks ( { 0 , 0 } , radius )
surface.force_generate_chunk_requests ( )
for _ , pl in pairs ( game.connected_players ) do
pl.play_sound { path = " utility/new_objective " , volume_modifier = 1 }
end
2019-11-10 23:02:45 +02:00
game.print ( " Map generation done! " , Color.success )
_a.generate_map = nil
2019-10-28 00:22:47 +02:00
end )
commands.add_command (
' dump_layout ' ,
' Dump the current map-layout. ' ,
function ( )
2019-11-10 23:02:45 +02:00
local p_modifer = Modifiers.get_table ( )
local _a = p_modifer
2019-10-28 00:22:47 +02:00
local player = game.player
local p
2019-02-14 16:44:12 +02:00
2019-10-28 00:22:47 +02:00
if player then
if player ~= nil then
p = player.print
if not player.admin then
2019-11-10 23:02:45 +02:00
p ( " [ERROR] You're not admin! " , Color.warning )
2019-10-28 00:22:47 +02:00
return
end
else
p = log
end
2019-11-10 23:02:45 +02:00
end
if not _a.dump_layout then
_a.dump_layout = true
player.print ( " [WARNING] This command will make the server LAG, run this command again if you really want to do this! " , Color.yellow )
return
2019-10-28 00:22:47 +02:00
end
local surface = game.players [ 1 ] . surface
game.write_file ( " layout.lua " , " " , false )
2019-03-03 23:50:51 +02:00
2019-10-28 00:22:47 +02:00
local area = {
left_top = { x = 0 , y = 0 } ,
right_bottom = { x = 32 , y = 32 }
}
local entities = surface.find_entities_filtered { area = area }
local tiles = surface.find_tiles_filtered { area = area }
for _ , e in pairs ( entities ) do
local str = " {position = {x = " .. e.position . x
str = str .. " , y = "
str = str .. e.position . y
str = str .. ' }, name = " '
str = str .. e.name
str = str .. ' ", direction = '
str = str .. tostring ( e.direction )
str = str .. ' , force = " '
str = str .. e.force . name
str = str .. ' "}, '
if e.name ~= " character " then
game.write_file ( " layout.lua " , str .. ' \n ' , true )
end
end
game.write_file ( " layout.lua " , ' \n ' , true )
game.write_file ( " layout.lua " , ' \n ' , true )
game.write_file ( " layout.lua " , ' Tiles: \n ' , true )
for _ , t in pairs ( tiles ) do
local str = " {position = {x = " .. t.position . x
str = str .. " , y = "
str = str .. t.position . y
str = str .. ' }, name = " '
str = str .. t.name
str = str .. ' "}, '
2019-03-03 23:50:51 +02:00
game.write_file ( " layout.lua " , str .. ' \n ' , true )
2019-11-10 23:02:45 +02:00
player.print ( " Dumped layout as file: layout.lua " , Color.success )
2019-03-03 23:50:51 +02:00
end
2019-11-10 23:02:45 +02:00
_a.dump_layout = false
2019-10-28 00:22:47 +02:00
end )
commands.add_command (
' creative ' ,
' Enables creative_mode. ' ,
function ( )
2019-11-10 23:02:45 +02:00
local p_modifer = Modifiers.get_table ( )
local _a = p_modifer
2019-10-28 00:22:47 +02:00
local player = game.player
local p
if player then
if player ~= nil then
p = player.print
if not player.admin then
2019-11-10 23:02:45 +02:00
p ( " [ERROR] You're not admin! " , Color.fail )
2019-10-28 00:22:47 +02:00
return
end
else
p = log
end
end
2019-11-10 23:02:45 +02:00
if not _a.creative_are_you_sure then
_a.creative_are_you_sure = true
player.print ( " [WARNING] This command will enable creative/cheat-mode for all connected players, run this command again if you really want to do this! " , Color.yellow )
return
end
if _a.creative_enabled == true then player.print ( " [ERROR] Creative/cheat-mode is already active! " , Color.fail ) return end
game.print ( player.name .. " has activated creative-mode! " , Color.warning )
Server.to_discord_bold ( table.concat { ' [Creative] ' .. player.name .. ' has activated creative-mode! ' } )
for k , v in pairs ( game.connected_players ) do
v.cheat_mode = true
v.insert { name = " power-armor-mk2 " , count = 1 }
if v.character ~= nil then
local p_armor = v.get_inventory ( 5 ) [ 1 ] . grid
p_armor.put ( { name = " fusion-reactor-equipment " } )
p_armor.put ( { name = " fusion-reactor-equipment " } )
p_armor.put ( { name = " fusion-reactor-equipment " } )
p_armor.put ( { name = " exoskeleton-equipment " } )
p_armor.put ( { name = " exoskeleton-equipment " } )
p_armor.put ( { name = " exoskeleton-equipment " } )
p_armor.put ( { name = " energy-shield-mk2-equipment " } )
p_armor.put ( { name = " energy-shield-mk2-equipment " } )
p_armor.put ( { name = " energy-shield-mk2-equipment " } )
p_armor.put ( { name = " energy-shield-mk2-equipment " } )
p_armor.put ( { name = " personal-roboport-mk2-equipment " } )
p_armor.put ( { name = " night-vision-equipment " } )
p_armor.put ( { name = " battery-mk2-equipment " } )
p_armor.put ( { name = " battery-mk2-equipment " } )
local item = game.item_prototypes
local i = 0
for _k , _v in pairs ( item ) do
i = i + 1
if _k and _v.type ~= " mining-tool " then
_a [ k ] . character_inventory_slots_bonus [ " creative " ] = tonumber ( i )
v.character_inventory_slots_bonus = _a [ k ] . character_inventory_slots_bonus [ " creative " ]
v.insert { name = _k , count = _v.stack_size }
v.print ( " Inserted all base items. " , Color.success )
_a.creative_enabled = true
end
end
2019-11-01 18:55:10 +02:00
end
end
end )
commands.add_command (
' clear-corpses ' ,
' Clears all the biter corpses.. ' ,
function ( cmd )
local player = game.player
local trusted = Session.get_trusted_table ( )
local param = tonumber ( cmd.parameter )
local p
if player then
if player ~= nil then
p = player.print
if not trusted [ player.name ] then
if not player.admin then
2019-11-10 23:02:45 +02:00
p ( " [ERROR] Only admins and trusted weebs are allowed to run this command! " , Color.fail )
2019-11-01 18:55:10 +02:00
return
end
end
else
p = log
2019-10-28 10:44:49 +02:00
end
2019-11-01 18:55:10 +02:00
end
2019-11-10 23:12:25 +02:00
if param == nil then player.print ( " [ERROR] Must specify radius! " , Color.fail ) return end
if param > 500 then player.print ( " [ERROR] Value is too big. " , Color.fail ) return end
2019-11-24 17:07:45 +02:00
local pos = player.position
2019-11-10 23:12:25 +02:00
2019-11-24 17:07:45 +02:00
local radius = { { x = ( pos.x + - param ) , y = ( pos.y + - param ) } , { x = ( pos.x + param ) , y = ( pos.y + param ) } }
2019-11-01 18:55:10 +02:00
for _ , entity in pairs ( player.surface . find_entities_filtered { area = radius , type = " corpse " } ) do
entity.destroy ( )
2019-10-28 10:44:49 +02:00
end
2019-11-24 17:07:45 +02:00
player.print ( " Cleared biter-corpses. " , Color.success )
end )