mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2024-12-30 23:17:53 +02:00
137 lines
3.8 KiB
Lua
137 lines
3.8 KiB
Lua
local Server = require 'utils.server'
|
|
local Global = require 'utils.globals'
|
|
|
|
local mapkeeper = '[color=blue]Mapkeeper:[/color]'
|
|
|
|
local Public = {}
|
|
|
|
local this = {
|
|
scenarioname = '',
|
|
reset_are_you_sure = false,
|
|
restart = false,
|
|
soft_reset = false,
|
|
shutdown = false,
|
|
accepted_params = {
|
|
['restart'] = true,
|
|
['resetnow'] = true,
|
|
['shutdown'] = true,
|
|
['restartnow'] = true
|
|
}
|
|
}
|
|
|
|
Global.register(
|
|
this,
|
|
function(t)
|
|
this = t
|
|
end
|
|
)
|
|
|
|
commands.add_command(
|
|
'scenario',
|
|
'Usable only for admins - controls the scenario!',
|
|
function(cmd)
|
|
local p
|
|
local player = game.player
|
|
|
|
if not player or not player.valid then
|
|
p = log
|
|
else
|
|
p = player.print
|
|
if not player.admin then
|
|
return
|
|
end
|
|
end
|
|
|
|
local param = cmd.parameter
|
|
|
|
if this.accepted_params[param] then
|
|
goto continue
|
|
else
|
|
p('[ERROR] Arguments was invalid.')
|
|
return
|
|
end
|
|
|
|
::continue::
|
|
|
|
if not this.reset_are_you_sure then
|
|
this.reset_are_you_sure = true
|
|
p('[WARNING] This command will disable the soft-reset feature, run this command again if you really want to do this!')
|
|
return
|
|
end
|
|
|
|
if param == 'restart' then
|
|
if this.restart then
|
|
this.reset_are_you_sure = nil
|
|
this.restart = false
|
|
this.soft_reset = true
|
|
p('[SUCCESS] Soft-reset is once again enabled.')
|
|
return
|
|
else
|
|
this.reset_are_you_sure = nil
|
|
this.restart = true
|
|
this.soft_reset = false
|
|
if this.shutdown then
|
|
this.shutdown = false
|
|
end
|
|
p('[WARNING] Soft-reset is disabled! Server will restart from scenario to load new changes.')
|
|
return
|
|
end
|
|
elseif param == 'restartnow' then
|
|
this.reset_are_you_sure = nil
|
|
p(player.name .. ' restarted the game.')
|
|
Server.start_scenario(this.scenarioname)
|
|
return
|
|
elseif param == 'shutdown' then
|
|
if this.shutdown then
|
|
this.reset_are_you_sure = nil
|
|
this.shutdown = false
|
|
this.soft_reset = true
|
|
p('[SUCCESS] Soft-reset is once again enabled.')
|
|
return
|
|
else
|
|
this.reset_are_you_sure = nil
|
|
this.shutdown = true
|
|
this.soft_reset = false
|
|
if this.restart then
|
|
this.restart = false
|
|
end
|
|
p('[WARNING] Soft-reset is disabled! Server will shutdown. Most likely because of updates.')
|
|
return
|
|
end
|
|
elseif param == 'reset' then
|
|
this.reset_are_you_sure = nil
|
|
if player and player.valid then
|
|
game.print(mapkeeper .. ' ' .. player.name .. ', has reset the game!', {r = 0.98, g = 0.66, b = 0.22})
|
|
else
|
|
game.print(mapkeeper .. ' server, has reset the game!', {r = 0.98, g = 0.66, b = 0.22})
|
|
end
|
|
-- reset_map()
|
|
p('[WARNING] Game has been reset!')
|
|
return
|
|
end
|
|
end
|
|
)
|
|
|
|
function Public.map_reset_callback(data, callback)
|
|
if not data then
|
|
return
|
|
end
|
|
if not callback then
|
|
return
|
|
end
|
|
|
|
if not string.find(callback, '%s') and not string.find(callback, 'return') then
|
|
callback = 'return ' .. callback
|
|
end
|
|
|
|
if type(callback) == 'function' then
|
|
local success, err = pcall(callback, data)
|
|
return success, err
|
|
else
|
|
local success, err = pcall(loadstring(callback), data)
|
|
return success, err
|
|
end
|
|
end
|
|
|
|
return Public
|