@@ -15,8 +15,12 @@ local Jail = require 'modules.control.jail' --- @dep modules.control.jail
1515local Colors = require ' resources.color_presets' --- @dep resources.color_presets
1616local format_chat_player_name = ext_require (' expcore.common' ,' format_chat_player_name' ) --- @dep expcore.common
1717
18- local action_player_store = ' gui.left.player-list.action-player'
19- local action_name_store = ' gui.left.player-list.action-name'
18+ local selected_player_store = ' '
19+ local selected_action_store = ' '
20+ local function set_store_uids (player ,action )
21+ selected_player_store = player
22+ selected_action_store = action
23+ end
2024
2125-- common style used by all action buttons
2226local function tool_button_style (style )
@@ -26,20 +30,20 @@ local function tool_button_style(style)
2630end
2731
2832-- auth that will only allow when on player's of lower roles
29- local function auth_lower_role (player ,action_player_name )
33+ local function auth_lower_role (player ,selected_player_name )
3034 local player_highest = Roles .get_player_highest_role (player )
31- local action_player_highest = Roles .get_player_highest_role (action_player_name )
35+ local action_player_highest = Roles .get_player_highest_role (selected_player_name )
3236 if player_highest .index < action_player_highest .index then
3337 return true
3438 end
3539end
3640
3741-- gets the action player and a coloured name for the action to be used on
3842local function get_action_player_name (player )
39- local action_player_name = Store .get (action_player_store ,player . name )
40- local action_player = Game .get_player_from_any (action_player_name )
41- local action_player_name_color = format_chat_player_name (action_player )
42- return action_player , action_player_name_color
43+ local selected_player_name = Store .get (selected_player_store ,player )
44+ local selected_player = Game .get_player_from_any (selected_player_name )
45+ local selected_player_color = format_chat_player_name (selected_player )
46+ return selected_player_name , selected_player_color
4347end
4448
4549-- telports one player to another
@@ -60,12 +64,12 @@ Gui.new_button()
6064:set_tooltip {' player-list.goto-player' }
6165:set_style (' tool_button' ,tool_button_style )
6266:on_click (function (player ,element )
63- local action_player_name = get_action_player_name (player )
64- local action_player = Game .get_player_from_any (action_player_name )
65- if not player .character or not action_player .character then
67+ local selected_player_name = get_action_player_name (player )
68+ local selected_player = Game .get_player_from_any (selected_player_name )
69+ if not player .character or not selected_player .character then
6670 player .print ({' expcore-commands.reject-player-alive' },Colors .orange_red )
6771 else
68- teleport (player ,action_player )
72+ teleport (player ,selected_player )
6973 end
7074end )
7175
@@ -77,12 +81,12 @@ Gui.new_button()
7781:set_tooltip {' player-list.bring-player' }
7882:set_style (' tool_button' ,tool_button_style )
7983:on_click (function (player ,element )
80- local action_player_name = get_action_player_name (player )
81- local action_player = Game .get_player_from_any (action_player_name )
82- if not player .character or not action_player .character then
84+ local selected_player_name = get_action_player_name (player )
85+ local selected_player = Game .get_player_from_any (selected_player_name )
86+ if not player .character or not selected_player .character then
8387 player .print ({' expcore-commands.reject-player-alive' },Colors .orange_red )
8488 else
85- teleport (action_player ,player )
89+ teleport (selected_player ,player )
8690 end
8791end )
8892
@@ -94,10 +98,10 @@ Gui.new_button()
9498:set_tooltip {' player-list.kill-player' }
9599:set_style (' tool_button' ,tool_button_style )
96100:on_click (function (player ,element )
97- local action_player_name = get_action_player_name (player )
98- local action_player = Game .get_player_from_any (action_player_name )
99- if action_player .character then
100- action_player .character .die ()
101+ local selected_player_name = get_action_player_name (player )
102+ local selected_player = Game .get_player_from_any (selected_player_name )
103+ if selected_player .character then
104+ selected_player .character .die ()
101105 else
102106 player .print ({' expcom-kill.already-dead' },Colors .orange_red )
103107 end
@@ -111,20 +115,20 @@ Gui.new_button()
111115:set_tooltip {' player-list.report-player' }
112116:set_style (' tool_button' ,tool_button_style )
113117:on_click (function (player ,element )
114- local action_player_name = get_action_player_name (player )
115- if Reports .is_reported (action_player_name ,player .name ) then
118+ local selected_player_name = get_action_player_name (player )
119+ if Reports .is_reported (selected_player_name ,player .name ) then
116120 player .print ({' expcom-report.already-reported' },Colors .orange_red )
117121 else
118- Store .set (action_name_store ,player . name ,' command/report' )
122+ Store .set (selected_action_store ,player ,' command/report' )
119123 end
120124end )
121125
122126local function report_player_callback (player ,reason )
123- local action_player_name , action_player_name_color = get_action_player_name (player )
127+ local selected_player_name , selected_player_color = get_action_player_name (player )
124128 local by_player_name_color = format_chat_player_name (player )
125- game .print {' expcom-report.non-admin' ,action_player_name_color ,reason }
126- Roles .print_to_roles_higher (' Trainee' ,{' expcom-report.admin' ,action_player_name_color ,by_player_name_color ,reason })
127- Reports .report_player (action_player_name ,player .name ,reason )
129+ game .print {' expcom-report.non-admin' , selected_player_color ,reason }
130+ Roles .print_to_roles_higher (' Trainee' ,{' expcom-report.admin' , selected_player_color ,by_player_name_color ,reason })
131+ Reports .report_player (selected_player_name ,player .name ,reason )
128132end
129133
130134--- Gives the action player a warning, requires a reason
@@ -135,14 +139,14 @@ Gui.new_button()
135139:set_tooltip {' player-list.warn-player' }
136140:set_style (' tool_button' ,tool_button_style )
137141:on_click (function (player ,element )
138- Store .set (action_name_store ,player . name ,' command/give-warning' )
142+ Store .set (selected_action_store ,player ,' command/give-warning' )
139143end )
140144
141145local function warn_player_callback (player ,reason )
142- local action_player_name , action_player_name_color = get_action_player_name (player )
146+ local selected_player_name , selected_player_color = get_action_player_name (player )
143147 local by_player_name_color = format_chat_player_name (player )
144- game .print {' expcom-warnings.received' ,action_player_name_color ,by_player_name_color ,reason }
145- Warnings .add_warning (action_player_name ,player .name ,reason )
148+ game .print {' expcom-warnings.received' , selected_player_color ,by_player_name_color ,reason }
149+ Warnings .add_warning (selected_player_name ,player .name ,reason )
146150end
147151
148152--- Jails the action player, requires a reason
@@ -153,19 +157,19 @@ Gui.new_button()
153157:set_tooltip {' player-list.jail-player' }
154158:set_style (' tool_button' ,tool_button_style )
155159:on_click (function (player ,element )
156- local action_player_name , action_player_name_color = get_action_player_name (player )
157- if Jail .is_jailed (action_player_name ) then
158- player .print ({' expcom-jail.already-jailed' ,action_player_name_color },Colors .orange_red )
160+ local selected_player_name , selected_player_color = get_action_player_name (player )
161+ if Jail .is_jailed (selected_player_name ) then
162+ player .print ({' expcom-jail.already-jailed' , selected_player_color },Colors .orange_red )
159163 else
160- Store .set (action_name_store ,player . name ,' command/jail' )
164+ Store .set (selected_action_store ,player ,' command/jail' )
161165 end
162166end )
163167
164168local function jail_player_callback (player ,reason )
165- local action_player_name , action_player_name_color = get_action_player_name (player )
169+ local selected_player_name , selected_player_color = get_action_player_name (player )
166170 local by_player_name_color = format_chat_player_name (player )
167- game .print {' expcom-jail.give' ,action_player_name_color ,by_player_name_color ,reason }
168- Jail .jail_player (action_player_name ,player .name ,reason )
171+ game .print {' expcom-jail.give' , selected_player_color ,by_player_name_color ,reason }
172+ Jail .jail_player (selected_player_name ,player .name ,reason )
169173end
170174
171175--- Temp bans the action player, requires a reason
@@ -176,19 +180,19 @@ Gui.new_button()
176180:set_tooltip {' player-list.temp-ban-player' }
177181:set_style (' tool_button' ,tool_button_style )
178182:on_click (function (player ,element )
179- local action_player_name , action_player_name_color = get_action_player_name (player )
180- if Jail .is_jailed (action_player_name ) then
181- player .print ({' expcom-jail.already-banned' ,action_player_name_color },Colors .orange_red )
183+ local selected_player_name , selected_player_color = get_action_player_name (player )
184+ if Jail .is_jailed (selected_player_name ) then
185+ player .print ({' expcom-jail.already-banned' , selected_player_color },Colors .orange_red )
182186 else
183- Store .set (action_name_store ,player . name ,' command/temp-ban' )
187+ Store .set (selected_action_store ,player ,' command/temp-ban' )
184188 end
185189end )
186190
187191local function temp_ban_player_callback (player ,reason )
188- local action_player , action_player_name_color = get_action_player_name (player )
192+ local selected_player , selected_player_color = get_action_player_name (player )
189193 local by_player_name_color = format_chat_player_name (player )
190- game .print {' expcom-jail.temp-ban' ,action_player_name_color ,by_player_name_color ,reason }
191- Jail .temp_ban_player (action_player ,player .name ,reason )
194+ game .print {' expcom-jail.temp-ban' , selected_player_color ,by_player_name_color ,reason }
195+ Jail .temp_ban_player (selected_player ,player .name ,reason )
192196end
193197
194198--- Kicks the action player, requires a reason
@@ -199,12 +203,12 @@ Gui.new_button()
199203:set_tooltip {' player-list.kick-player' }
200204:set_style (' tool_button' ,tool_button_style )
201205:on_click (function (player ,element )
202- Store .set (action_name_store ,player . name ,' command/kick' )
206+ Store .set (selected_action_store ,player ,' command/kick' )
203207end )
204208
205209local function kick_player_callback (player ,reason )
206- local action_player = get_action_player_name (player )
207- game .kick_player (action_player ,reason )
210+ local selected_player = get_action_player_name (player )
211+ game .kick_player (selected_player ,reason )
208212end
209213
210214--- Bans the action player, requires a reason
@@ -215,64 +219,67 @@ Gui.new_button()
215219:set_tooltip {' player-list.ban-player' }
216220:set_style (' tool_button' ,tool_button_style )
217221:on_click (function (player ,element )
218- Store .set (action_name_store ,player . name ,' command/ban' )
222+ Store .set (selected_action_store ,player ,' command/ban' )
219223end )
220224
221225local function ban_player_callback (player ,reason )
222- local action_player = get_action_player_name (player )
223- game .ban_player (action_player ,reason )
226+ local selected_player = get_action_player_name (player )
227+ game .ban_player (selected_player ,reason )
224228end
225229
226230return {
227- [' command/teleport' ] = {
228- auth = function (player ,action_player )
229- return player .name ~= action_player .name
230- end , -- cant teleport to your self
231- goto_player ,
232- bring_player
233- },
234- [' command/kill' ] = {
235- auth = function (player ,action_player )
236- if player .name == action_player .name then
237- return true
238- elseif Roles .player_allowed (player ,' command/kill/always' ) then
239- return auth_lower_role (player ,action_player )
240- end
241- end , -- player must be lower role, or your self
242- kill_player
243- },
244- [' command/report' ] = {
245- auth = function (player ,action_player )
246- if not Roles .player_allowed (player ,' command/give-warning' ) then
247- return not Roles .player_has_flag (action_player ,' report-immune' )
248- end
249- end , -- can report any player that isn't immune and you aren't able to give warnings
250- reason_callback = report_player_callback ,
251- report_player
252- },
253- [' command/give-warning' ] = {
254- auth = auth_lower_role , -- warn a lower user, replaces report
255- reason_callback = warn_player_callback ,
256- warn_player
257- },
258- [' command/jail' ] = {
259- auth = auth_lower_role ,
260- reason_callback = jail_player_callback ,
261- jail_player
262- },
263- [' command/temp-ban' ] = {
264- auth = auth_lower_role ,
265- reason_callback = temp_ban_player_callback ,
266- temp_ban_player
267- },
268- [' command/kick' ] = {
269- auth = auth_lower_role ,
270- reason_callback = kick_player_callback ,
271- kick_player
272- },
273- [' command/ban' ] = {
274- auth = auth_lower_role ,
275- reason_callback = ban_player_callback ,
276- ban_player
231+ set_store_uids = set_store_uids ,
232+ buttons = {
233+ [' command/teleport' ] = {
234+ auth = function (player ,selected_player )
235+ return player .name ~= selected_player .name
236+ end , -- cant teleport to your self
237+ goto_player ,
238+ bring_player
239+ },
240+ [' command/kill' ] = {
241+ auth = function (player ,selected_player )
242+ if player .name == selected_player .name then
243+ return true
244+ elseif Roles .player_allowed (player ,' command/kill/always' ) then
245+ return auth_lower_role (player ,selected_player )
246+ end
247+ end , -- player must be lower role, or your self
248+ kill_player
249+ },
250+ [' command/report' ] = {
251+ auth = function (player ,selected_player )
252+ if not Roles .player_allowed (player ,' command/give-warning' ) then
253+ return not Roles .player_has_flag (selected_player ,' report-immune' )
254+ end
255+ end , -- can report any player that isn't immune and you aren't able to give warnings
256+ reason_callback = report_player_callback ,
257+ report_player
258+ },
259+ [' command/give-warning' ] = {
260+ auth = auth_lower_role , -- warn a lower user, replaces report
261+ reason_callback = warn_player_callback ,
262+ warn_player
263+ },
264+ [' command/jail' ] = {
265+ auth = auth_lower_role ,
266+ reason_callback = jail_player_callback ,
267+ jail_player
268+ },
269+ [' command/temp-ban' ] = {
270+ auth = auth_lower_role ,
271+ reason_callback = temp_ban_player_callback ,
272+ temp_ban_player
273+ },
274+ [' command/kick' ] = {
275+ auth = auth_lower_role ,
276+ reason_callback = kick_player_callback ,
277+ kick_player
278+ },
279+ [' command/ban' ] = {
280+ auth = auth_lower_role ,
281+ reason_callback = ban_player_callback ,
282+ ban_player
283+ }
277284 }
278285}
0 commit comments