diff --git a/config/action_buttons.lua b/config/action_buttons.lua index 2e2fb9ae..2ce10565 100644 --- a/config/action_buttons.lua +++ b/config/action_buttons.lua @@ -15,8 +15,12 @@ local Jail = require 'modules.control.jail' --- @dep modules.control.jail local Colors = require 'resources.color_presets' --- @dep resources.color_presets local format_chat_player_name = ext_require('expcore.common','format_chat_player_name') --- @dep expcore.common -local action_player_store = 'gui.left.player-list.action-player' -local action_name_store = 'gui.left.player-list.action-name' +local selected_player_store = '' +local selected_action_store = '' +local function set_store_uids(player,action) + selected_player_store = player + selected_action_store = action +end -- common style used by all action buttons local function tool_button_style(style) @@ -26,9 +30,9 @@ local function tool_button_style(style) end -- auth that will only allow when on player's of lower roles -local function auth_lower_role(player,action_player_name) +local function auth_lower_role(player,selected_player_name) local player_highest = Roles.get_player_highest_role(player) - local action_player_highest = Roles.get_player_highest_role(action_player_name) + local action_player_highest = Roles.get_player_highest_role(selected_player_name) if player_highest.index < action_player_highest.index then return true end @@ -36,10 +40,10 @@ end -- gets the action player and a coloured name for the action to be used on local function get_action_player_name(player) - local action_player_name = Store.get(action_player_store,player.name) - local action_player = Game.get_player_from_any(action_player_name) - local action_player_name_color = format_chat_player_name(action_player) - return action_player,action_player_name_color + local selected_player_name = Store.get(selected_player_store,player) + local selected_player = Game.get_player_from_any(selected_player_name) + local selected_player_color = format_chat_player_name(selected_player) + return selected_player_name, selected_player_color end -- telports one player to another @@ -60,12 +64,12 @@ Gui.new_button() :set_tooltip{'player-list.goto-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name = get_action_player_name(player) - local action_player = Game.get_player_from_any(action_player_name) - if not player.character or not action_player.character then + local selected_player_name = get_action_player_name(player) + local selected_player = Game.get_player_from_any(selected_player_name) + if not player.character or not selected_player.character then player.print({'expcore-commands.reject-player-alive'},Colors.orange_red) else - teleport(player,action_player) + teleport(player,selected_player) end end) @@ -77,12 +81,12 @@ Gui.new_button() :set_tooltip{'player-list.bring-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name = get_action_player_name(player) - local action_player = Game.get_player_from_any(action_player_name) - if not player.character or not action_player.character then + local selected_player_name = get_action_player_name(player) + local selected_player = Game.get_player_from_any(selected_player_name) + if not player.character or not selected_player.character then player.print({'expcore-commands.reject-player-alive'},Colors.orange_red) else - teleport(action_player,player) + teleport(selected_player,player) end end) @@ -94,10 +98,10 @@ Gui.new_button() :set_tooltip{'player-list.kill-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name = get_action_player_name(player) - local action_player = Game.get_player_from_any(action_player_name) - if action_player.character then - action_player.character.die() + local selected_player_name = get_action_player_name(player) + local selected_player = Game.get_player_from_any(selected_player_name) + if selected_player.character then + selected_player.character.die() else player.print({'expcom-kill.already-dead'},Colors.orange_red) end @@ -111,20 +115,20 @@ Gui.new_button() :set_tooltip{'player-list.report-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name = get_action_player_name(player) - if Reports.is_reported(action_player_name,player.name) then + local selected_player_name = get_action_player_name(player) + if Reports.is_reported(selected_player_name,player.name) then player.print({'expcom-report.already-reported'},Colors.orange_red) else - Store.set(action_name_store,player.name,'command/report') + Store.set(selected_action_store,player,'command/report') end end) local function report_player_callback(player,reason) - local action_player_name,action_player_name_color = get_action_player_name(player) + local selected_player_name, selected_player_color = get_action_player_name(player) local by_player_name_color = format_chat_player_name(player) - game.print{'expcom-report.non-admin',action_player_name_color,reason} - Roles.print_to_roles_higher('Trainee',{'expcom-report.admin',action_player_name_color,by_player_name_color,reason}) - Reports.report_player(action_player_name,player.name,reason) + game.print{'expcom-report.non-admin', selected_player_color,reason} + Roles.print_to_roles_higher('Trainee',{'expcom-report.admin', selected_player_color,by_player_name_color,reason}) + Reports.report_player(selected_player_name,player.name,reason) end --- Gives the action player a warning, requires a reason @@ -135,14 +139,14 @@ Gui.new_button() :set_tooltip{'player-list.warn-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - Store.set(action_name_store,player.name,'command/give-warning') + Store.set(selected_action_store,player,'command/give-warning') end) local function warn_player_callback(player,reason) - local action_player_name,action_player_name_color = get_action_player_name(player) + local selected_player_name, selected_player_color = get_action_player_name(player) local by_player_name_color = format_chat_player_name(player) - game.print{'expcom-warnings.received',action_player_name_color,by_player_name_color,reason} - Warnings.add_warning(action_player_name,player.name,reason) + game.print{'expcom-warnings.received', selected_player_color,by_player_name_color,reason} + Warnings.add_warning(selected_player_name,player.name,reason) end --- Jails the action player, requires a reason @@ -153,19 +157,19 @@ Gui.new_button() :set_tooltip{'player-list.jail-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name,action_player_name_color = get_action_player_name(player) - if Jail.is_jailed(action_player_name) then - player.print({'expcom-jail.already-jailed',action_player_name_color},Colors.orange_red) + local selected_player_name, selected_player_color = get_action_player_name(player) + if Jail.is_jailed(selected_player_name) then + player.print({'expcom-jail.already-jailed', selected_player_color},Colors.orange_red) else - Store.set(action_name_store,player.name,'command/jail') + Store.set(selected_action_store,player,'command/jail') end end) local function jail_player_callback(player,reason) - local action_player_name,action_player_name_color = get_action_player_name(player) + local selected_player_name, selected_player_color = get_action_player_name(player) local by_player_name_color = format_chat_player_name(player) - game.print{'expcom-jail.give',action_player_name_color,by_player_name_color,reason} - Jail.jail_player(action_player_name,player.name,reason) + game.print{'expcom-jail.give', selected_player_color,by_player_name_color,reason} + Jail.jail_player(selected_player_name,player.name,reason) end --- Temp bans the action player, requires a reason @@ -176,19 +180,19 @@ Gui.new_button() :set_tooltip{'player-list.temp-ban-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - local action_player_name,action_player_name_color = get_action_player_name(player) - if Jail.is_jailed(action_player_name) then - player.print({'expcom-jail.already-banned',action_player_name_color},Colors.orange_red) + local selected_player_name, selected_player_color = get_action_player_name(player) + if Jail.is_jailed(selected_player_name) then + player.print({'expcom-jail.already-banned', selected_player_color},Colors.orange_red) else - Store.set(action_name_store,player.name,'command/temp-ban') + Store.set(selected_action_store,player,'command/temp-ban') end end) local function temp_ban_player_callback(player,reason) - local action_player,action_player_name_color = get_action_player_name(player) + local selected_player, selected_player_color = get_action_player_name(player) local by_player_name_color = format_chat_player_name(player) - game.print{'expcom-jail.temp-ban',action_player_name_color,by_player_name_color,reason} - Jail.temp_ban_player(action_player,player.name,reason) + game.print{'expcom-jail.temp-ban', selected_player_color,by_player_name_color,reason} + Jail.temp_ban_player(selected_player,player.name,reason) end --- Kicks the action player, requires a reason @@ -199,12 +203,12 @@ Gui.new_button() :set_tooltip{'player-list.kick-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - Store.set(action_name_store,player.name,'command/kick') + Store.set(selected_action_store,player,'command/kick') end) local function kick_player_callback(player,reason) - local action_player = get_action_player_name(player) - game.kick_player(action_player,reason) + local selected_player = get_action_player_name(player) + game.kick_player(selected_player,reason) end --- Bans the action player, requires a reason @@ -215,64 +219,67 @@ Gui.new_button() :set_tooltip{'player-list.ban-player'} :set_style('tool_button',tool_button_style) :on_click(function(player,element) - Store.set(action_name_store,player.name,'command/ban') + Store.set(selected_action_store,player,'command/ban') end) local function ban_player_callback(player,reason) - local action_player = get_action_player_name(player) - game.ban_player(action_player,reason) + local selected_player = get_action_player_name(player) + game.ban_player(selected_player,reason) end return { - ['command/teleport'] = { - auth=function(player,action_player) - return player.name ~= action_player.name - end, -- cant teleport to your self - goto_player, - bring_player - }, - ['command/kill'] = { - auth=function(player,action_player) - if player.name == action_player.name then - return true - elseif Roles.player_allowed(player,'command/kill/always') then - return auth_lower_role(player,action_player) - end - end, -- player must be lower role, or your self - kill_player - }, - ['command/report'] = { - auth=function(player,action_player) - if not Roles.player_allowed(player,'command/give-warning') then - return not Roles.player_has_flag(action_player,'report-immune') - end - end, -- can report any player that isn't immune and you aren't able to give warnings - reason_callback=report_player_callback, - report_player - }, - ['command/give-warning'] = { - auth=auth_lower_role, -- warn a lower user, replaces report - reason_callback=warn_player_callback, - warn_player - }, - ['command/jail'] = { - auth=auth_lower_role, - reason_callback=jail_player_callback, - jail_player - }, - ['command/temp-ban'] = { - auth=auth_lower_role, - reason_callback=temp_ban_player_callback, - temp_ban_player - }, - ['command/kick'] = { - auth=auth_lower_role, - reason_callback=kick_player_callback, - kick_player - }, - ['command/ban'] = { - auth=auth_lower_role, - reason_callback=ban_player_callback, - ban_player + set_store_uids = set_store_uids, + buttons = { + ['command/teleport'] = { + auth=function(player,selected_player) + return player.name ~= selected_player.name + end, -- cant teleport to your self + goto_player, + bring_player + }, + ['command/kill'] = { + auth=function(player,selected_player) + if player.name == selected_player.name then + return true + elseif Roles.player_allowed(player,'command/kill/always') then + return auth_lower_role(player,selected_player) + end + end, -- player must be lower role, or your self + kill_player + }, + ['command/report'] = { + auth=function(player,selected_player) + if not Roles.player_allowed(player,'command/give-warning') then + return not Roles.player_has_flag(selected_player,'report-immune') + end + end, -- can report any player that isn't immune and you aren't able to give warnings + reason_callback=report_player_callback, + report_player + }, + ['command/give-warning'] = { + auth=auth_lower_role, -- warn a lower user, replaces report + reason_callback=warn_player_callback, + warn_player + }, + ['command/jail'] = { + auth=auth_lower_role, + reason_callback=jail_player_callback, + jail_player + }, + ['command/temp-ban'] = { + auth=auth_lower_role, + reason_callback=temp_ban_player_callback, + temp_ban_player + }, + ['command/kick'] = { + auth=auth_lower_role, + reason_callback=kick_player_callback, + kick_player + }, + ['command/ban'] = { + auth=auth_lower_role, + reason_callback=ban_player_callback, + ban_player + } } } \ No newline at end of file diff --git a/docs/addons/Advanced-Start.html b/docs/addons/Advanced-Start.html index 17a11fd8..8fc6a44a 100644 --- a/docs/addons/Advanced-Start.html +++ b/docs/addons/Advanced-Start.html @@ -79,6 +79,32 @@ + +