From 6d5de99100c7c7260dbc3d44cf83ecf710e35d2f Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 30 Nov 2025 00:36:55 +0200 Subject: [PATCH 1/2] Refactor: use tables instead of element data --- [admin]/admin/client/gui/admin_main.lua | 2 +- [admin]/admin/server/admin_server.lua | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index fefbacd88..4e4315d0f 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -1408,7 +1408,7 @@ end function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) - setElementData( localPlayer, "AnonAdmin", bOn ) + triggerServerEvent("aAdmin", localPlayer, "adminpanel", "updateAnonymous", bOn) aSetSetting ( "currentAnonState", bOn ) end diff --git a/[admin]/admin/server/admin_server.lua b/[admin]/admin/server/admin_server.lua index 96bac5622..9be838dc5 100644 --- a/[admin]/admin/server/admin_server.lua +++ b/[admin]/admin/server/admin_server.lua @@ -618,7 +618,7 @@ end -- Should admin name be hidden from public chatbox message? function isAnonAdmin4All ( admin ) - return getElementData( admin, "AnonAdmin" ) == true + return aPlayers[admin] and aPlayers[admin]["AnonymousAdmin"] or false end -- Should admin name be hidden from private chatbox message? @@ -666,6 +666,7 @@ end ) local aAdminRights = { ["settings"] = "general.tab_resources", ["resourcelist"] = "general.tab_resources", + ["adminpanel"] = "general.adminpanel", ["sync"] = "command.aclmanager", ["aclcreate"] = "command.aclcreate", @@ -907,6 +908,13 @@ addEventHandler ( "aAdmin", root, function ( action, ... ) end end end + elseif ( action == "adminpanel" ) then + local cmd = arg[1] + + if cmd == "updateAnonymous" then + local state = arg[2] + aPlayers[client]["AnonymousAdmin"] = state + end end end ) @@ -961,7 +969,7 @@ addEventHandler ( "aPlayer", root, function ( player, action, data, additional, if ( action == "kick" ) then local reason = data or "" mdata = reason~="" and ( "(" .. reason .. ")" ) or "" - local isAnonAdmin = getElementData(source, "AnonAdmin") + local isAnonAdmin = isAnonAdmin4All(source) if isAnonAdmin then setTimer ( kickPlayer, 100, 1, player, "Anonymous admin", reason ) else @@ -971,7 +979,7 @@ addEventHandler ( "aPlayer", root, function ( player, action, data, additional, local reason = data or "" local seconds = tonumber(additional) and tonumber(additional) > 0 and tonumber(additional) local bUseSerial = additional2 - local isAnonAdmin = getElementData(source, "AnonAdmin") + local isAnonAdmin = isAnonAdmin4All(source) mdata = reason~="" and ( "(" .. reason .. ")" ) or "" more = seconds and ( "(" .. secondsToTimeDesc(seconds) .. ")" ) or "" if bUseSerial and getPlayerName ( player ) and not isAnonAdmin then @@ -1034,7 +1042,7 @@ addEventHandler ( "aPlayer", root, function ( player, action, data, additional, elseif ( action == "shout" ) then local textDisplay = textCreateDisplay () local textItem - local anon = getElementData( admin, "AnonAdmin" ) + local anon = isAnonAdmin4All( admin ) if (anon) then textItem = textCreateTextItem ( "ADMIN:\n\n"..data, 0.5, 0.5, 2, 255, 100, 50, 255, 4, "center", "center" ) else From 41695c219aa74e1577e0bf25926d80c75df608af Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 30 Nov 2025 01:20:00 +0200 Subject: [PATCH 2/2] admin2: Refactor use tables instead of element data --- [admin]/admin2/admin_definitions.lua | 3 ++- [admin]/admin2/client/main/admin_players.lua | 2 +- [admin]/admin2/server/admin_server.lua | 11 +++++++++++ [admin]/admin2/shared/utils.lua | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/[admin]/admin2/admin_definitions.lua b/[admin]/admin2/admin_definitions.lua index 9e7951eb5..53f9d18dc 100644 --- a/[admin]/admin2/admin_definitions.lua +++ b/[admin]/admin2/admin_definitions.lua @@ -46,7 +46,8 @@ enum( "EVENT_SCREEN_SHOT", "EVENT_RESOURCE_START", "EVENT_RESOURCE_STOP", - "EVENT_PLAYER_JOIN" + "EVENT_PLAYER_JOIN", + "EVENT_ANONYMOUS_UPDATE" }, "ae" ) diff --git a/[admin]/admin2/client/main/admin_players.lua b/[admin]/admin2/client/main/admin_players.lua index 3aeb0afe0..4ea73a457 100644 --- a/[admin]/admin2/client/main/admin_players.lua +++ b/[admin]/admin2/client/main/admin_players.lua @@ -263,7 +263,7 @@ function aPlayersTab.onClientClick(button) end end elseif (source == aPlayersTab.AnonAdmin) then - setElementData(localPlayer, "AnonAdmin", guiCheckBoxGetSelected(aPlayersTab.AnonAdmin)) + triggerServerEvent(EVENT_ANONYMOUS_UPDATE, localPlayer, guiCheckBoxGetSelected(aPlayersTab.AnonAdmin)) elseif (source == aPlayersTab.ColorCodes) then aPlayersTab.Refresh() aSetSetting('hideColorCodes', guiCheckBoxGetSelected(source)) diff --git a/[admin]/admin2/server/admin_server.lua b/[admin]/admin2/server/admin_server.lua index 2472e44b6..dae2daa36 100644 --- a/[admin]/admin2/server/admin_server.lua +++ b/[admin]/admin2/server/admin_server.lua @@ -418,6 +418,17 @@ addEventHandler( end ) +addEvent(EVENT_ANONYMOUS_UPDATE, true) +addEventHandler( + EVENT_ANONYMOUS_UPDATE, + root, + function(state) + if (hasObjectPermissionTo(client, "general.adminpanel", false)) then + aPlayers[client]["AnonymousAdmin"] = state + end + end +) + addCommandHandler(get("adminChatCommandName"), function(thePlayer, cmd, ...) if (hasObjectPermissionTo(thePlayer, "general.tab_adminchat", false) and #arg > 0) then diff --git a/[admin]/admin2/shared/utils.lua b/[admin]/admin2/shared/utils.lua index 8064fc691..3282ac3d8 100644 --- a/[admin]/admin2/shared/utils.lua +++ b/[admin]/admin2/shared/utils.lua @@ -38,7 +38,7 @@ function isAnonAdmin(aplayer) return false end - return (getElementData(player, "AnonAdmin") == true) + return aPlayers[aplayer] and aPlayers[aplayer]["AnonymousAdmin"] or false end -- Source: https://wiki.multitheftauto.com/wiki/FormatDate