Updated player list

This commit is contained in:
Cooldude2606
2019-10-15 21:44:03 +01:00
parent 06030ff2c2
commit 258ca8dbde
6 changed files with 319 additions and 154 deletions

View File

@@ -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
}
}
}