From b9e360ce3a33cdede746d2bef8664b8a97b7b9eb Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 23 Nov 2018 12:07:44 -0500 Subject: [PATCH] Shift command logging to free_item_logging, fix cases of server as actor (#427) Shift command logging to free_item_logging, fix cases of server as actor --- features/custom_commands.lua | 15 ++------------- features/gui/popup.lua | 13 +++++-------- features/report.lua | 4 ++-- utils/utils.lua | 25 +++++++++++++------------ 4 files changed, 22 insertions(+), 35 deletions(-) diff --git a/features/custom_commands.lua b/features/custom_commands.lua index 5fde9d68..a5e6852d 100644 --- a/features/custom_commands.lua +++ b/features/custom_commands.lua @@ -22,7 +22,6 @@ local function invoke(cmd) local pos = game.player.surface.find_non_colliding_position('player', game.player.position, 0, 1) game.players[target].teleport({pos.x, pos.y}, game.player.surface) game.print(target .. ', get your ass over here!') - Utils.log_command(game.player.name, cmd.name, cmd.parameter) end --- Takes a target and teleports player to target. (admin only) @@ -41,7 +40,6 @@ local function teleport_player(cmd) game.player.teleport(pos, surface) game.print(target .. "! watcha doin'?!") game.player.print('You have teleported to ' .. game.players[target].name) - Utils.log_command(game.player.name, cmd.name, cmd.parameter) end --- Takes a selected entity and teleports player to entity. (admin only) @@ -56,7 +54,6 @@ local function teleport_location(cmd) end local pos = game.player.surface.find_non_colliding_position('player', game.player.selected.position, 0, 1) game.player.teleport(pos) - Utils.log_command(game.player.name, cmd.name, false) end --- Kill a player with fish as the cause of death. @@ -91,8 +88,8 @@ local function kill(cmd) end if global.walking then - if global.walking[player.index] == true or global.walking[target.index] == true then - player.print("A player on walkabout cannot be killed by a mere fish, don't waste your efforts.") + if (player and global.walking[player.index]) or global.walking[target.index] then + Game.player_print("A player on walkabout cannot be killed by a mere fish, don't waste your efforts.") return end end @@ -110,7 +107,6 @@ local function kill(cmd) if not do_fish_kill(target) then Game.player_print(table.concat {"'Sorry, '", target.name, "' doesn't have a character to kill."}) end - Utils.log_command(game.player.name, cmd.name, param) else Game.player_print("Sorry you don't have permission to use the kill command on other players.") end @@ -146,10 +142,8 @@ local function regular(cmd) return elseif (params[1] == 'promote') then UserGroups.add_regular(params[2]) - Utils.log_command(game.player.name, cmd.name, cmd.parameter) elseif (params[1] == 'demote') then UserGroups.remove_regular(params[2]) - Utils.log_command(game.player.name, cmd.name, cmd.parameter) else Game.player_print('Command failed. Usage: /regular , ') end @@ -231,11 +225,9 @@ local function toggle_tp_mode(cmd) if toggled then global.tp_players[index] = nil Game.player_print('tp mode is now off') - Utils.log_command(game.player.name, cmd.name, 'off') else global.tp_players[index] = true Game.player_print('tp mode is now on - place a ghost entity to teleport there.') - Utils.log_command(game.player.name, cmd.name, 'on') end end @@ -290,7 +282,6 @@ local function tempban(cmd) local group = get_group() game.print(Utils.get_actor() .. ' put ' .. params[1] .. ' in timeout for ' .. params[2] .. ' minutes.') - Utils.log_command(game.player.name, cmd.name, cmd.parameter) if group then group.add_player(params[1]) if not tonumber(cmd.parameter) then @@ -336,7 +327,6 @@ local function pool(cmd) end game.player.surface.set_tiles(t) game.player.surface.create_entity {name = 'fish', position = {p.x + 0.5, p.y + 5}} - Utils.log_command(game.player.name, cmd.name, false) end end @@ -488,7 +478,6 @@ commands.add_command( function() if game.player and game.player.admin then game.player.cheat_mode = not game.player.cheat_mode - Utils.log_command(game.player, 'hax', false) end end ) diff --git a/features/gui/popup.lua b/features/gui/popup.lua index 3e1f1b72..c129b770 100644 --- a/features/gui/popup.lua +++ b/features/gui/popup.lua @@ -86,9 +86,8 @@ local function popup(cmd) show_popup(p, message) end - player.print('Popup sent') - Utils.print_admins(player.name .. ' sent a popup to all players', false) - Utils.log_command(game.player.name, cmd.name, cmd.parameter) + Game.player_print('Popup sent') + Utils.print_admins(Utils.get_actor() .. ' sent a popup to all players', false) end -- Creates a popup dialog for all players, specifically for the server upgrading factorio versions @@ -105,9 +104,8 @@ local function popup_update(cmd) show_popup(p, message) end - player.print('Popup sent') - Utils.print_admins(player.name .. ' sent a popup to all players', false) - Utils.log_command(game.player.name, cmd.name, message) + Game.player_print('Popup sent') + Utils.print_admins(Utils.get_actor() .. ' sent a popup to all players', false) end -- Creates a popup dialog for the specifically targetted player @@ -141,8 +139,7 @@ local function popup_player(cmd) show_popup(target, message) - player.print('Popup sent') - Utils.log_command(game.player.name, cmd.name, cmd.parameter) + Game.player_print('Popup sent') end commands.add_command('popup', ' - Shows a popup to all connected players (Admins only)', popup) diff --git a/features/report.lua b/features/report.lua index 20cc4675..87dd24a0 100644 --- a/features/report.lua +++ b/features/report.lua @@ -207,7 +207,7 @@ function Module.jail(target_player, player) target_player.print('Please respond to inquiries from the admins.', {r = 1, g = 1, b = 0, a = 1}) target_player.print(prefix_e) Utils.print_admins(target_player.name .. ' has been jailed by ' .. player.name) - Utils.log_command(player, 'jail', target_player.name) + Utils.log_command(Utils.get_actor(), 'jail', target_player.name) else -- Let admin know it didn't work. print('Something went wrong in the jailing of ' .. target_player.name .. '. You can still change their group via /permissions.') @@ -264,7 +264,7 @@ function Module.unjail_player(cmd) target_player.print('Your ability to perform actions has been restored', {r = 0, g = 1, b = 0, a = 1}) target_player.print(prefix_e) Utils.print_admins(target_player.name .. ' has been released from jail by ' .. player.name) - Utils.log_command(player, 'unjail', target_player.name) + Utils.log_command(Utils.get_actor(), 'unjail', target_player.name) else -- Let admin know it didn't work. Game.player_print('Something went wrong in the unjailing of ' .. target .. '. You can still change their group via /permissions and inform them.') diff --git a/utils/utils.lua b/utils/utils.lua index 34c0b446..29b364de 100644 --- a/utils/utils.lua +++ b/utils/utils.lua @@ -16,7 +16,9 @@ Module.print_except = function(msg, player) end end --- Takes a LuaPlayer or string as source +--- Prints a message to all online admins +--@param1 The message to print, as a string +--@param2 The source of the message, as a string, LuaPlayer, or nil. Module.print_admins = function(msg, source) local source_name local chat_color @@ -41,6 +43,7 @@ Module.print_admins = function(msg, source) end end +--- Returns a valid string with the name of the actor of a command. Module.get_actor = function() if game.player then return game.player.name @@ -119,22 +122,20 @@ Module.format_time = function(ticks) return table.concat(result, ' ') end +--- Prints a message letting the player know they cannot run a command +-- @param1 name of the command Module.cant_run = function(name) Game.player_print("Can't run command (" .. name .. ') - insufficient permission.') end -Module.log_command = function(user, command, parameters) - local name - - -- We can use a LuaPlayer or a string (ex. "Server"). - if type(user) == 'string' then - name = user - else - name = user.name - end - local action = table.concat {'[Admin-Command] ', name, ' used: ', command} +--- Logs the use of a command and its user +-- @param1 takes a string with the actor's name (usually acquired by calling get_actor) +-- @param2 the command's name as table element +-- @param3 the command's parameters as a table element (optional) +Module.log_command = function(actor, command, parameters) + local action = table.concat {'[Admin-Command] ', actor, ' used: ', command} if parameters then - action = table.concat {'[Admin-Command] ', name, ' used: ', command, ' ', parameters} + action = table.concat {action, ' ', parameters} end log(action) end