From b728cad8bcf1d98ddb4768997fae0933a74dc0fb Mon Sep 17 00:00:00 2001 From: danielmartin0 Date: Thu, 2 Jun 2022 14:47:23 +0100 Subject: [PATCH] add: new admin command to force the ship to set sail --- maps/pirates/commands.lua | 291 ++++++++++++++++++++------------------ 1 file changed, 155 insertions(+), 136 deletions(-) diff --git a/maps/pirates/commands.lua b/maps/pirates/commands.lua index 1c7fa4b9..3d69ebe9 100644 --- a/maps/pirates/commands.lua +++ b/maps/pirates/commands.lua @@ -40,6 +40,161 @@ local Classes = require 'maps.pirates.roles.classes' local GUIcolor = require 'maps.pirates.gui.color' + +local function check_admin(cmd) + local Session = require 'utils.datastore.session_data' + local player = game.players[cmd.player_index] + local trusted = Session.get_trusted_table() + local p + if player then + if player ~= nil then + p = player.print + if not player.admin then + p('[ERROR] Only admins are allowed to run this command!', Color.fail) + return false + end + else + p = log + end + end + return true +end + + + +local function check_captain(cmd) + local player = game.players[cmd.player_index] + local p + if player then + if player ~= nil then + p = player.print + if not Common.validate_player(player) then return end + local crew_id = tonumber(string.sub(game.players[cmd.player_index].force.name, -3, -1)) or nil + Memory.set_working_id(crew_id) + local memory = Memory.get_crew_memory() + if not (Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN) then + p('[ERROR] Only captains are allowed to run this command!', Color.fail) + return false + end + else + p = log + end + end + return true +end + + + +local function check_captain_or_admin(cmd) + local player = game.players[cmd.player_index] + local p + if player then + if player ~= nil then + p = player.print + if not Common.validate_player(player) then return end + local crew_id = tonumber(string.sub(game.players[cmd.player_index].force.name, -3, -1)) or nil + Memory.set_working_id(crew_id) + local memory = Memory.get_crew_memory() + if not (player.admin or Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN) then + p('[ERROR] Only captains are allowed to run this command!', Color.fail) + return false + end + else + p = log + end + end + return true +end + + +local function check_trusted(cmd) + local Session = require 'utils.datastore.session_data' + local player = game.players[cmd.player_index] + local trusted = Session.get_trusted_table() + local p + if player then + if player ~= nil then + p = player.print + if not (trusted[player.name] or player.admin) then + p('[ERROR] Only admins and trusted weebs are allowed to run this command!', Color.fail) + return false + end + else + p = log + end + end + return true +end + + + +commands.add_command( +'set_max_crews', +'is an admin command to set the maximum number of concurrent crews allowed on the server.', +function(cmd) + local param = tostring(cmd.parameter) + if check_admin(cmd) then + local player = game.players[cmd.player_index] + local global_memory = Memory.get_global_memory() + + if tonumber(param) then + global_memory.active_crews_cap = tonumber(param) + Common.notify_player_expected(player, 'The maximum number of concurrent crews has been set to ' .. param .. '.') + end + end +end) + +commands.add_command( +'sail', +'is an admin command to set the ship sailing after an island, in case there\'s a problem with the captain doing so.', +function(cmd) + local param = tostring(cmd.parameter) + if check_admin(cmd) then + local player = game.players[cmd.player_index] + local crew_id = tonumber(string.sub(player.force.name, -3, -1)) or nil + Memory.set_working_id(crew_id) + local memory = Memory.get_crew_memory() + Crew.summon_crew() + if memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL then + Progression.at_sea_begin_to_set_sail() + end + end +end) + +commands.add_command( +'setcaptain', +'{player} is an admin command to set the crew\'s captain to {player}.', +function(cmd) + local param = tostring(cmd.parameter) + if check_admin(cmd) then + local player = game.players[cmd.player_index] + local crew_id = tonumber(string.sub(player.force.name, -3, -1)) or nil + Memory.set_working_id(crew_id) + if param and game.players[param] and game.players[param].index then + Roles.make_captain(game.players[param]) + else + Common.notify_player_error(player, 'Command error: Invalid player name.') + end + end +end) + +commands.add_command( +'summoncrew', +'is an admin command to summon the crew to the ship.', +function(cmd) + local param = tostring(cmd.parameter) + if check_admin(cmd) then + local player = game.players[cmd.player_index] + local crew_id = tonumber(string.sub(player.force.name, -3, -1)) or nil + Memory.set_working_id(crew_id) + Crew.summon_crew() + end +end) + + + + + commands.add_command( 'ok', 'is used to accept captainhood.', @@ -187,111 +342,6 @@ local go_1 = Token.register( - -local function check_admin(cmd) - local Session = require 'utils.datastore.session_data' - local player = game.players[cmd.player_index] - local trusted = Session.get_trusted_table() - local p - if player then - if player ~= nil then - p = player.print - if not player.admin then - p('[ERROR] Only admins are allowed to run this command!', Color.fail) - return false - end - else - p = log - end - end - return true -end - - - -local function check_captain(cmd) - local player = game.players[cmd.player_index] - local p - if player then - if player ~= nil then - p = player.print - if not Common.validate_player(player) then return end - local crew_id = tonumber(string.sub(game.players[cmd.player_index].force.name, -3, -1)) or nil - Memory.set_working_id(crew_id) - local memory = Memory.get_crew_memory() - if not (Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN) then - p('[ERROR] Only captains are allowed to run this command!', Color.fail) - return false - end - else - p = log - end - end - return true -end - - - -local function check_captain_or_admin(cmd) - local player = game.players[cmd.player_index] - local p - if player then - if player ~= nil then - p = player.print - if not Common.validate_player(player) then return end - local crew_id = tonumber(string.sub(game.players[cmd.player_index].force.name, -3, -1)) or nil - Memory.set_working_id(crew_id) - local memory = Memory.get_crew_memory() - if not (player.admin or Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN) then - p('[ERROR] Only captains are allowed to run this command!', Color.fail) - return false - end - else - p = log - end - end - return true -end - - -local function check_trusted(cmd) - local Session = require 'utils.datastore.session_data' - local player = game.players[cmd.player_index] - local trusted = Session.get_trusted_table() - local p - if player then - if player ~= nil then - p = player.print - if not (trusted[player.name] or player.admin) then - p('[ERROR] Only admins and trusted weebs are allowed to run this command!', Color.fail) - return false - end - else - p = log - end - end - return true -end - - - -commands.add_command( -'set_max_crews', -'is an admin command to set the maximum number of concurrent crews allowed on the server.', -function(cmd) - local param = tostring(cmd.parameter) - if check_admin(cmd) then - local player = game.players[cmd.player_index] - local global_memory = Memory.get_global_memory() - - if tonumber(param) then - global_memory.active_crews_cap = tonumber(param) - Common.notify_player_expected(player, 'The maximum number of concurrent crews has been set to ' .. param .. '.') - end - end -end) - - commands.add_command( 'plank', 'is a captain command to remove a player by making them a spectator.', @@ -370,37 +420,6 @@ function(cmd) end end) -commands.add_command( -'setcaptain', -'{player} is an admin command to set the crew\'s captain to {player}.', -function(cmd) - local param = tostring(cmd.parameter) - if check_admin(cmd) then - local player = game.players[cmd.player_index] - local crew_id = tonumber(string.sub(player.force.name, -3, -1)) or nil - Memory.set_working_id(crew_id) - local memory = Memory.get_crew_memory() - if param and game.players[param] and game.players[param].index then - Roles.make_captain(game.players[param]) - else - Common.notify_player_error(player, 'Command error: Invalid player name.') - end - end -end) - -commands.add_command( -'summoncrew', -'is an admin command to summon the crew to the ship.', -function(cmd) - local param = tostring(cmd.parameter) - if check_admin(cmd) then - local player = game.players[cmd.player_index] - local crew_id = tonumber(string.sub(player.force.name, -3, -1)) or nil - Memory.set_working_id(crew_id) - Crew.summon_crew() - end -end) - commands.add_command( 'setclass', 'is a dev command.',