From a11b7cb04bf9db22048453034c42cdd1b6fbe753 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 09:12:55 -0300 Subject: [PATCH 01/16] Update admin_main.lua --- [admin]/admin/client/gui/admin_main.lua | 228 +++++++++++++++--------- 1 file changed, 145 insertions(+), 83 deletions(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 4dae2e212..7bc807321 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -35,11 +35,12 @@ function aAdminMenu () aTabPanel = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm ) aTab1 = {} aTab1.Tab = guiCreateTab ( "Players", aTabPanel, "players" ) - aTab1.Messages = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab ) - aTab1.ScreenShots = guiCreateButton ( 0.75, 0.065, 0.23, 0.04, "screenshots", true, aTab1.Tab ) + aTab1.Messages = guiCreateButton ( 0.71, 0.02, 0.27, 0.04, "0/0 unread messages", true, aTab1.Tab ) + aTab1.ScreenShots = guiCreateButton ( 0.71, 0.065, 0.27, 0.04, "screenshots", true, aTab1.Tab ) aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) - aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab ) + aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", false, true, aTab1.Tab ) + aTab1.HideSensitiveData= guiCreateCheckBox ( 0.25, 0.94, 0.20, 0.04, "Hide sensitive datas", false, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) guiGridListSetSortingEnabled ( aTab1.PlayerList, false ) @@ -90,9 +91,7 @@ y=y+B aTab1.Weapon = guiCreateLabel ( 0.26, y, 0.35, 0.04, "Weapon: N/A", tru y=y+B aTab1.Ping = guiCreateLabel ( 0.26, y, 0.20, 0.04, "Ping: 0", true, aTab1.Tab ) aTab1.Money = guiCreateLabel ( 0.45, y, 0.20, 0.04, "Money: 0", true, aTab1.Tab ) y=y+B aTab1.Area = guiCreateLabel ( 0.26, y, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab ) -y=y+B aTab1.PositionX = guiCreateLabel ( 0.26, y, 0.30, 0.04, "X: 0", true, aTab1.Tab ) -y=y+B aTab1.PositionY = guiCreateLabel ( 0.26, y, 0.30, 0.04, "Y: 0", true, aTab1.Tab ) -y=y+B aTab1.PositionZ = guiCreateLabel ( 0.26, y, 0.30, 0.04, "Z: 0", true, aTab1.Tab ) +y=y+B aTab1.Position = guiCreateLabel ( 0.26, y, 0.44, 0.04, "Position: 0, 0, 0", true, aTab1.Tab ) y=y+B aTab1.Dimension = guiCreateLabel ( 0.26, y, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab ) aTab1.Interior = guiCreateLabel ( 0.45, y, 0.20, 0.04, "Interior: 0", true, aTab1.Tab ) @@ -121,7 +120,7 @@ y=y+B aTab1.VehicleHealth = guiCreateLabel ( 0.26, y, 0.25, 0.04, "Vehicle Heal aTab1.VehicleDestroy = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" ) aTab1.VehicleBlow = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" ) aTab1.VehicleCustomize = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" ) - aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), true, aTab1.Tab ) + aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", false, true, aTab1.Tab ) aTab1.GiveVehicle = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" ) aTab1.VehicleDropDown = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) local gx, gy = guiGetSize ( aTab1.GiveVehicle, false ) @@ -375,6 +374,10 @@ y=y+B aTab1.VehicleHealth = guiCreateLabel ( 0.26, y, 0.25, 0.04, "Vehicle Heal guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" ) guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" ) end + + setAnonAdmin(aGetSetting('currentAnonState')) + setHideSensitiveData(aGetSetting('currentHideSensitiveDataState')) + setHideColorCodes(aGetSetting('currentHideColorCodesState')) end guiSetVisible ( aAdminForm, true ) showCursor ( true ) @@ -448,12 +451,22 @@ function aAdminRefresh () if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then local player = getPlayerFromName ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) ) if ( player and aPlayers[player] ) then - guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] ) + local playerName = aPlayers[player]["name"] + + if isColorCodeHidden() then + playerName = removeColorCoding(playerName) + else + if playerName:find('#%x%x%x%x%x%x') then + playerName = playerName .. (' (%s)'):format(removeColorCoding(playerName)) + end + end + + guiSetText ( aTab1.Name, "Name: ".. playerName) guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) ) guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) ) --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) ) guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) ) - guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) ) + guiSetText ( aTab1.Accountname, "Account Name: "..getSensitiveText( aPlayers[player]["accountname"] or "" ) ) guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) ) guiSetText ( aTab1.ACDetected, "AC Detected: "..( aPlayers[player]["acdetected"] or "" ) ) guiSetText ( aTab1.ACD3D, "D3D9.DLL: "..( aPlayers[player]["d3d9dll"] or "" ) ) @@ -470,11 +483,19 @@ function aAdminRefresh () if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) ) if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end + local x, y, z = getElementPosition ( player ) - guiSetText ( aTab1.Area, "Area: "..iif ( getZoneName ( x, y, z, false ) == getZoneName ( x, y, z, true ), getZoneName ( x, y, z, false ), getZoneName ( x, y, z, false ).." ("..getZoneName ( x, y, z, true )..")" ) ) - guiSetText ( aTab1.PositionX, "X: "..x ) - guiSetText ( aTab1.PositionY, "Y: "..y ) - guiSetText ( aTab1.PositionZ, "Z: "..z ) + local zoneName = getZoneName ( x, y, z, false ) + local cityName = getZoneName ( x, y, z, true ) + + guiSetText ( aTab1.Area, "Area: "..getSensitiveText( iif ( zoneName == cityName, zoneName, zoneName.." ("..cityName..")" ) ) ) + + x = getSensitiveText('%.3f'):format(x) + y = getSensitiveText('%.3f'):format(y) + z = getSensitiveText('%.3f'):format(z) + + guiSetText(aTab1.Position, ( "Position: %s, %s, %s" ):format(x, y, z)) + local vehicle = getPedOccupiedVehicle ( player ) if ( vehicle ) then guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" ) @@ -540,7 +561,7 @@ function aClientSync ( type, table, data ) elseif ( type == "server" ) then guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) - guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) ) + guiSetText ( aTab3.Password, "Password: "..getSensitiveText( table["password"] or "None" ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) guiSetText ( aTab3.FPSCurrent, "FPS Limit: "..( table["fps"] or "N/A" ) ) @@ -982,9 +1003,11 @@ function aClientClick ( button ) elseif ( source == aTab1.PlayerListSearch ) then elseif ( source == aTab1.HideColorCodes ) then - updateColorCodes() + setHideColorCodes ( guiCheckBoxGetSelected ( aTab1.HideColorCodes ) ) elseif ( source == aTab1.AnonAdmin ) then setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) ) + elseif ( source == aTab1.HideSensitiveData ) then + setHideSensitiveData( guiCheckBoxGetSelected ( aTab1.HideSensitiveData ) ) elseif ( getElementType ( source ) == "gui-button" ) then if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown ) elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown ) @@ -1041,71 +1064,7 @@ function aClientClick ( button ) guiSetVisible ( aTab1.SlapOptions, true ) guiBringToFront ( aTab1.SlapOptions ) elseif ( source == aTab1.PlayerList ) then - if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then - local player = aAdminRefresh () - if ( player ) then - triggerServerEvent ( "aSync", localPlayer, "player", player ) - if ( ( guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) and ( player ) ) then - outputConsole ( "Name: "..aPlayers[player]["name"] - ..", IP: "..aPlayers[player]["IP"] - ..", Serial: "..aPlayers[player]["serial"] - -- ..", Community Username: "..aPlayers[player]["username"] - ..", Account Name: "..aPlayers[player]["accountname"] - ..", D3D9.DLL: "..aPlayers[player]["d3d9dll"] ) - end - guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] ) - guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] ) - --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) - guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] ) - guiSetText ( aTab1.ACDetected, "AC Detected: "..aPlayers[player]["acdetected"] ) - guiSetText ( aTab1.ACD3D, "D3D9.DLL: "..aPlayers[player]["d3d9dll"] ) - guiSetText ( aTab1.ACModInfo, "Img Mods: "..aPlayers[player]["imgmodsnum"] ) - local countryCode = aPlayers[player]["country"] - loadFlagImage ( aTab1.Flag, countryCode ) - if not countryCode then - guiSetText ( aTab1.CountryCode, "" ) - else - local x, y = guiGetPosition ( aTab1.IP, false ) - local width = guiLabelGetTextExtent ( aTab1.IP ) - guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) - guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) - guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) - end - guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) - end - else - guiSetText ( aTab1.Name, "Name: N/A" ) - guiSetText ( aTab1.IP, "IP: N/A" ) - guiSetText ( aTab1.Serial, "Serial: N/A" ) - --guiSetText ( aTab1.Username, "Community Username: N/A" ) - guiSetText ( aTab1.Version, "Version: N/A" ) - guiSetText ( aTab1.Accountname, "Account Name: N/A" ) - guiSetText ( aTab1.Groups, "Groups: N/A" ) - guiSetText ( aTab1.ACDetected, "AC Detected: N/A" ) - guiSetText ( aTab1.ACD3D, "D3D9.DLL: N/A" ) - guiSetText ( aTab1.ACModInfo, "Img Mods: N/A" ) - guiSetText ( aTab1.Mute, "Mute" ) - guiSetText ( aTab1.Freeze, "Freeze" ) - guiSetText ( aTab1.Admin, "Give admin rights" ) - guiSetText ( aTab1.Health, "Health: 0%" ) - guiSetText ( aTab1.Armour, "Armour: 0%" ) - guiSetText ( aTab1.Skin, "Skin: N/A" ) - guiSetText ( aTab1.Team, "Team: None" ) - guiSetText ( aTab1.Ping, "Ping: 0" ) - guiSetText ( aTab1.Money, "Money: 0" ) - guiSetText ( aTab1.Dimension, "Dimension: 0" ) - guiSetText ( aTab1.Interior, "Interior: 0" ) - guiSetText ( aTab1.JetPack, "Give JetPack" ) - guiSetText ( aTab1.Weapon, "Weapon: N/A" ) - guiSetText ( aTab1.Area, "Area: Unknown" ) - guiSetText ( aTab1.PositionX, "X: 0" ) - guiSetText ( aTab1.PositionY, "Y: 0" ) - guiSetText ( aTab1.PositionZ, "Z: 0" ) - guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) - guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) - guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) - guiSetText ( aTab1.CountryCode, "" ) - end + aAdminReloadInfos() end -- TAB 2, RESOURCES elseif ( getElementParent ( source ) == aTab2.Tab ) then @@ -1288,6 +1247,83 @@ function aClientRender () end end +function aAdminReloadInfos() + if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then + local player = aAdminRefresh () + if ( player ) then + triggerServerEvent ( "aSync", localPlayer, "player", player ) + if ( ( guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) and ( player ) ) then + local playerName = aPlayers[player]["name"] + + if isColorCodeHidden() then + playerName = removeColorCoding(playerName) + else + if playerName:find('#%x%x%x%x%x%x') then + playerName = playerName .. (' (%s)'):format(removeColorCoding(playerName)) + end + end + + outputConsole(' ') + outputConsole(('Name: %s'):format(playerName)) + outputConsole(('IP: %s'):format(aPlayers[player]["IP"])) + outputConsole(('Serial: %s'):format(aPlayers[player]["serial"])) + -- outputConsole(('Community Username: %s'):format(aPlayers[player]["username"])) + outputConsole(('Account Name: %s'):format(aPlayers[player]["accountname"])) + outputConsole(('D3D9.DLL: %s'):format(aPlayers[player]["d3d9dll"])) + outputConsole(' ') + end + guiSetText ( aTab1.IP, "IP: "..getSensitiveText( aPlayers[player]["IP"] ) ) + guiSetText ( aTab1.Serial, "Serial: "..getSensitiveText( aPlayers[player]["serial"] ) ) + --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) + guiSetText ( aTab1.Accountname, "Account Name: "..getSensitiveText( aPlayers[player]["accountname"] ) ) + guiSetText ( aTab1.ACDetected, "AC Detected: "..aPlayers[player]["acdetected"] ) + guiSetText ( aTab1.ACD3D, "D3D9.DLL: "..aPlayers[player]["d3d9dll"] ) + guiSetText ( aTab1.ACModInfo, "Img Mods: "..aPlayers[player]["imgmodsnum"] ) + local countryCode = aPlayers[player]["country"] + loadFlagImage ( aTab1.Flag, countryCode ) + if not countryCode then + guiSetText ( aTab1.CountryCode, "" ) + else + local x, y = guiGetPosition ( aTab1.IP, false ) + local width = guiLabelGetTextExtent ( aTab1.IP ) + guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) + guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) + guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) + end + guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) + end + else + guiSetText ( aTab1.Name, "Name: N/A" ) + guiSetText ( aTab1.IP, "IP: N/A" ) + guiSetText ( aTab1.Serial, "Serial: N/A" ) + --guiSetText ( aTab1.Username, "Community Username: N/A" ) + guiSetText ( aTab1.Version, "Version: N/A" ) + guiSetText ( aTab1.Accountname, "Account Name: N/A" ) + guiSetText ( aTab1.Groups, "Groups: N/A" ) + guiSetText ( aTab1.ACDetected, "AC Detected: N/A" ) + guiSetText ( aTab1.ACD3D, "D3D9.DLL: N/A" ) + guiSetText ( aTab1.ACModInfo, "Img Mods: N/A" ) + guiSetText ( aTab1.Mute, "Mute" ) + guiSetText ( aTab1.Freeze, "Freeze" ) + guiSetText ( aTab1.Admin, "Give admin rights" ) + guiSetText ( aTab1.Health, "Health: 0%" ) + guiSetText ( aTab1.Armour, "Armour: 0%" ) + guiSetText ( aTab1.Skin, "Skin: N/A" ) + guiSetText ( aTab1.Team, "Team: None" ) + guiSetText ( aTab1.Ping, "Ping: 0" ) + guiSetText ( aTab1.Money, "Money: 0" ) + guiSetText ( aTab1.Dimension, "Dimension: 0" ) + guiSetText ( aTab1.Interior, "Interior: 0" ) + guiSetText ( aTab1.JetPack, "Give JetPack" ) + guiSetText ( aTab1.Weapon, "Weapon: N/A" ) + guiSetText ( aTab1.Area, "Area: Unknown" ) + guiSetText ( aTab1.Position, "Position: 0, 0, 0" ) + guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) + guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) + guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) + guiSetText ( aTab1.CountryCode, "" ) + end +end function updateColorCodes() local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } @@ -1299,8 +1335,7 @@ function updateColorCodes() end function guiGridListSetItemPlayerName( gridlist, row, col, name ) - local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) - guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) + guiGridListSetItemText( gridlist, row, col, isColorCodeHidden() and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name ) end @@ -1373,12 +1408,39 @@ end -- anon admin function isAnonAdmin() - return getElementData( localPlayer, "AnonAdmin" ) == true + return guiCheckBoxGetSelected ( aTab1.AnonAdmin ) end function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) setElementData( localPlayer, "AnonAdmin", bOn ) + aSetSetting ( "currentAnonState", bOn ) +end + +-- sensitive data +function setHideSensitiveData( bOn ) + guiCheckBoxSetSelected ( aTab1.HideSensitiveData, bOn ) + aSetSetting ( "currentHideSensitiveDataState", bOn ) + aAdminReloadInfos() +end + +function getSensitiveText(text) + if guiCheckBoxGetSelected(aTab1.HideSensitiveData) then + return ('*'):rep(utf8.len(text)) + end + return text +end + +-- hide color codes +function isColorCodeHidden() + return guiCheckBoxGetSelected ( aTab1.HideColorCodes ) +end + +function setHideColorCodes( bOn ) + guiCheckBoxSetSelected ( aTab1.HideColorCodes, bOn ) + aSetSetting ( "currentHideColorCodesState", bOn ) + updateColorCodes() + aAdminReloadInfos() end function loadFlagImage( guiStaticImage, countryCode ) From f1663b382b10f4d53770ff9b6ef5853ee57a46ba Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 09:41:00 -0300 Subject: [PATCH 02/16] fix the "hide sensitive datas" checkbox width --- [admin]/admin/client/gui/admin_main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 7bc807321..ee11f6f95 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -40,7 +40,7 @@ function aAdminMenu () aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", false, true, aTab1.Tab ) - aTab1.HideSensitiveData= guiCreateCheckBox ( 0.25, 0.94, 0.20, 0.04, "Hide sensitive datas", false, true, aTab1.Tab ) + aTab1.HideSensitiveData= guiCreateCheckBox ( 0.25, 0.94, 0.23, 0.04, "Hide sensitive datas", false, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) guiGridListSetSortingEnabled ( aTab1.PlayerList, false ) From 2559152cf16920ebaa7ddd0bcfb46fe66e7c42f8 Mon Sep 17 00:00:00 2001 From: Breno Danyel <38073795+iDannz-Breno@users.noreply.github.com> Date: Sun, 11 Apr 2021 12:55:20 -0300 Subject: [PATCH 03/16] Update [admin]/admin/client/gui/admin_main.lua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gabrielius Laurinavičius --- [admin]/admin/client/gui/admin_main.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index ee11f6f95..45dee9d36 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -40,7 +40,8 @@ function aAdminMenu () aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", false, true, aTab1.Tab ) - aTab1.HideSensitiveData= guiCreateCheckBox ( 0.25, 0.94, 0.23, 0.04, "Hide sensitive datas", false, true, aTab1.Tab ) + aTab1.HideSensitiveData= guiCreateCheckBox ( 0.25, 0.94, 0.23, 0.04, "Hide sensitive data", false, true, aTab1.Tab ) + aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) guiGridListSetSortingEnabled ( aTab1.PlayerList, false ) From 1d0644fe6ff23631f0088af6912ec73e8be360d9 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:11:10 -0300 Subject: [PATCH 04/16] make "hide sensitive data" ignore the "Output admin messages to chat box" setting --- [admin]/admin/client/gui/admin_main.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 45dee9d36..f3f491e2c 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -865,7 +865,7 @@ function aClientAdminChat ( message ) local chat = guiGetText ( aTab5.AdminChat ) guiSetText ( aTab5.AdminChat, (chat ~= "\n" and chat or "")..getPlayerName ( source )..": "..message ) guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( chat ) ) ) - if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN CHAT> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end + if ( not isSensitiveDataHidden() and ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) ) then outputChatBox ( "ADMIN CHAT> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= localPlayer ) ) then playSoundFrontEnd ( 13 ) end end @@ -1419,6 +1419,10 @@ function setAnonAdmin( bOn ) end -- sensitive data +function isSensitiveDataHidden() + return guiCheckBoxGetSelected(aTab1.HideSensitiveData) +end + function setHideSensitiveData( bOn ) guiCheckBoxSetSelected ( aTab1.HideSensitiveData, bOn ) aSetSetting ( "currentHideSensitiveDataState", bOn ) @@ -1426,7 +1430,7 @@ function setHideSensitiveData( bOn ) end function getSensitiveText(text) - if guiCheckBoxGetSelected(aTab1.HideSensitiveData) then + if isSensitiveDataHidden() then return ('*'):rep(utf8.len(text)) end return text From 0167c8c79dd3f2b3e55cc689badf726666c036d3 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:14:11 -0300 Subject: [PATCH 05/16] make "hide sensitive data" ignore "Output player information to console" --- [admin]/admin/client/gui/admin_main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index f3f491e2c..707a572ba 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -1253,7 +1253,7 @@ function aAdminReloadInfos() local player = aAdminRefresh () if ( player ) then triggerServerEvent ( "aSync", localPlayer, "player", player ) - if ( ( guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) and ( player ) ) then + if (not isSensitiveDataHidden()) and guiCheckBoxGetSelected(aTab6.OutputPlayer) then local playerName = aPlayers[player]["name"] if isColorCodeHidden() then From d96caed7b7ea7c02ae739b600e30c15f16f5ca6e Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:22:44 -0300 Subject: [PATCH 06/16] make "hide sensitive data" disable bans and admin Chat tabs --- [admin]/admin/client/gui/admin_main.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 707a572ba..eebc2e82b 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -1427,6 +1427,8 @@ function setHideSensitiveData( bOn ) guiCheckBoxSetSelected ( aTab1.HideSensitiveData, bOn ) aSetSetting ( "currentHideSensitiveDataState", bOn ) aAdminReloadInfos() + guiSetEnabled(aTab4.Tab, not bOn) -- toggle Bans tab + guiSetEnabled(aTab5.Tab, not bOn) -- toggle Admin Chat tab end function getSensitiveText(text) From 1fc6849bb5aa9a8c53dfdb70479f545682cce988 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:44:26 -0300 Subject: [PATCH 07/16] hide sensitive data and color codes in reports window --- [admin]/admin/client/gui/admin_message.lua | 17 +++++++++++++---- [admin]/admin/client/gui/admin_messages.lua | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/[admin]/admin/client/gui/admin_message.lua b/[admin]/admin/client/gui/admin_message.lua index b0ac7c5bd..5037816be 100644 --- a/[admin]/admin/client/gui/admin_message.lua +++ b/[admin]/admin/client/gui/admin_message.lua @@ -43,7 +43,7 @@ function aViewMessage ( id ) guiSetText ( aViewMessageCategory, _messages[id].category ) guiSetText ( aViewMessageForm, _messages[id].subject ) guiSetText ( aViewMessageTime, _messages[id].time ) - guiSetText ( aViewMessageAuthor, _messages[id].author ) + guiSetText ( aViewMessageAuthor, removeColorCoding( _messages[id].author ) ) guiSetText ( aViewMessageText, _messages[id].text ) guiSetVisible ( aViewMessageForm, true ) local isVisible = _messages[id].suspect ~= nil @@ -68,9 +68,18 @@ function aViewSuspectInfo ( button ) aSuspectInfo = nil end, false) - local infoMemo = guiCreateMemo(0.04, 0.1, 0.96, 0.75, "Nickname: "..suspectInfo.name.."\nAccount name: "..suspectInfo.username.."\nIP: " - ..suspectInfo.ip.."\nSerial: "..suspectInfo.serial.."\nMTA version: "..suspectInfo.version.."\n\nChat log:\n"..suspectInfo.chatLog, - true, aSuspectInfo) + local text = { + 'Nickname: '.. removeColorCoding(suspectInfo.name), + 'Account name: '.. getSensitiveText(suspectInfo.username), + 'IP: '.. getSensitiveText(suspectInfo.ip), + 'Serial: '.. getSensitiveText(suspectInfo.serial), + 'MTA version: '.. suspectInfo.version, + 'Chat log: '.. suspectInfo.chatLog, + } + + local text = table.concat(displayInfo, '\n') + + local infoMemo = guiCreateMemo(0.04, 0.1, 0.96, 0.75, text, true, aSuspectInfo) guiMemoSetReadOnly(infoMemo, true) else aMessageBox ( "error", "This report does have any suspect information." ) diff --git a/[admin]/admin/client/gui/admin_messages.lua b/[admin]/admin/client/gui/admin_messages.lua index a02ed5fc7..457bff087 100644 --- a/[admin]/admin/client/gui/admin_messages.lua +++ b/[admin]/admin/client/gui/admin_messages.lua @@ -66,7 +66,7 @@ function aMessagesSync ( action, data ) if ( message.read ) then guiGridListSetItemText ( aMessagesList, row, 2, message.subject, false, false ) else guiGridListSetItemText ( aMessagesList, row, 2, "* "..message.subject, false, false ) end guiGridListSetItemText ( aMessagesList, row, 3, message.time, false, false ) - guiGridListSetItemText ( aMessagesList, row, 4, message.author, false, false ) + guiGridListSetItemText ( aMessagesList, row, 4, removeColorCoding(message.author), false, false ) end end end From f00d13e4f1e5cdc4360fec354d5f7f25bdbdc844 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:56:54 -0300 Subject: [PATCH 08/16] remove color codes from screenshots window --- [admin]/admin/client/gui/admin_screenshot.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/[admin]/admin/client/gui/admin_screenshot.lua b/[admin]/admin/client/gui/admin_screenshot.lua index e6671f820..397f2bfff 100644 --- a/[admin]/admin/client/gui/admin_screenshot.lua +++ b/[admin]/admin/client/gui/admin_screenshot.lua @@ -120,8 +120,8 @@ addEventHandler("aClientScreenShot",resourceRoot, guiGridListClear ( aScreenShotList ) for i,screenshot in ipairs (data) do local row = guiGridListAddRow(aScreenShotList) - guiGridListSetItemText(aScreenShotList,row,1,screenshot.player,false,false) - guiGridListSetItemText(aScreenShotList,row,2,screenshot.admin,false,false) + guiGridListSetItemText(aScreenShotList,row,1,removeColorCoding(screenshot.player),false,false) + guiGridListSetItemText(aScreenShotList,row,2,removeColorCoding(screenshot.admin),false,false) guiGridListSetItemText(aScreenShotList,row,3,screenshot.realtime,false,false) guiGridListSetItemData(aScreenShotList,row,1,screenshot.id) end From e7b492c5d799735a239dd06ec3f2437440d85a5d Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:58:13 -0300 Subject: [PATCH 09/16] remove color codes from kick and unmute dialog --- [admin]/admin/client/gui/admin_main.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index eebc2e82b..75d87f127 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -1018,10 +1018,10 @@ function aClientClick ( button ) else local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) local player = getPlayerFromName ( name ) - if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "kickPlayer", player ) + if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..removeColorCoding(name), "Enter the kick reason", "", "kickPlayer", player ) elseif ( source == aTab1.Ban ) then aBanInputBox ( player ) elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", localPlayer, player, "slap", aCurrentSlap ) - elseif ( source == aTab1.Mute ) then if not aPlayers[player]["mute"] then aMuteInputBox ( player ) else aMessageBox ( "question", "Are you sure to unmute "..name.."?", "unmute", player ) end + elseif ( source == aTab1.Mute ) then if not aPlayers[player]["mute"] then aMuteInputBox ( player ) else aMessageBox ( "question", "Are you sure to unmute "..removeColorCoding(name).."?", "unmute", player ) end elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", localPlayer, player, "freeze" ) elseif ( source == aTab1.Spectate ) then aSpectate ( player ) elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "setNick", player ) From 613db07581ff3baa656a113fcd61ed775e8c4296 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 17:58:35 -0300 Subject: [PATCH 10/16] remove color codes from mute window --- [admin]/admin/client/gui/admin_inputbox.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_inputbox.lua b/[admin]/admin/client/gui/admin_inputbox.lua index 5c38d0fed..78564407a 100644 --- a/[admin]/admin/client/gui/admin_inputbox.lua +++ b/[admin]/admin/client/gui/admin_inputbox.lua @@ -463,7 +463,7 @@ function aMuteInputBox ( player ) guiSetText ( aMuteInputRadio2s[i], dur>0 and secondsToTimeDesc(dur) or "Until reconnect" ) end - guiSetText ( aMuteInputForm, "Mute player " .. getPlayerName(player) ) + guiSetText ( aMuteInputForm, "Mute player " .. removeColorCoding(getPlayerName(player)) ) guiSetText ( aMuteInputLabel, "Enter the mute reason" ) aHideFloaters() guiSetVisible ( aMuteInputForm, true ) From 3bbe52c867c7b6e472101c856015e1ae50ee5d82 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 18:01:00 -0300 Subject: [PATCH 11/16] fix message box not showing entire messages --- [admin]/admin/client/gui/admin_messagebox.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_messagebox.lua b/[admin]/admin/client/gui/admin_messagebox.lua index 134053975..4a416266e 100644 --- a/[admin]/admin/client/gui/admin_messagebox.lua +++ b/[admin]/admin/client/gui/admin_messagebox.lua @@ -41,7 +41,7 @@ function aMessageBox ( type, message, action, vOne, vTwo, vThree ) guiSetSize ( aMessageLabel, 350, 100, false ) else guiSetSize ( aMessageForm, 300, 120, false ) - guiSetSize ( aMessageLabel, 150, 16, false ) + guiSetSize ( aMessageLabel, 150, 30, false ) end local sx, sy = guiGetSize ( aMessageForm, false ) guiSetPosition ( aMessageOk, sx / 2 - 22, 90, false ) From 30436d12d27b8dd539228319b23265c725e23bd2 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 18:06:01 -0300 Subject: [PATCH 12/16] remove extra space from "set dimension" input box --- [admin]/admin/client/gui/admin_main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 75d87f127..187bbf558 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -1034,7 +1034,7 @@ function aClientClick ( button ) elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", localPlayer, player, "jetpack" ) elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "setMoney", player ) elseif ( source == aTab1.SetStats ) then aPlayerStats ( player ) - elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "setDimension", player) + elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "setDimension", player) elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", localPlayer, player, "givevehicle", aCurrentVehicle ) elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", localPlayer, player, "giveweapon", aCurrentWeapon, aCurrentAmmo ) elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", localPlayer, player, "warp" ) From 2946c9f7a17660a4a404c82f0bee94f2520f57b5 Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sun, 11 Apr 2021 18:11:55 -0300 Subject: [PATCH 13/16] update server password label when change "hide sensitive data" state --- [admin]/admin/client/gui/admin_main.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 187bbf558..4cb78f6b6 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -19,6 +19,8 @@ aBans = {} aLastSync = 0 aResources = {} +local serverPassword = 'None' + function guiComboBoxAdjustHeight ( combobox, itemcount ) if getElementType ( combobox ) ~= "gui-combobox" or type ( itemcount ) ~= "number" then error ( "Invalid arguments @ 'guiComboBoxAdjustHeight'", 2 ) end local width = guiGetSize ( combobox, false ) @@ -560,9 +562,10 @@ function aClientSync ( type, table, data ) end end elseif ( type == "server" ) then + serverPassword = table["password"] or "None" guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) - guiSetText ( aTab3.Password, "Password: "..getSensitiveText( table["password"] or "None" ) ) + guiSetText ( aTab3.Password, "Password: "..getSensitiveText( serverPassword ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) guiSetText ( aTab3.FPSCurrent, "FPS Limit: "..( table["fps"] or "N/A" ) ) @@ -1324,6 +1327,7 @@ function aAdminReloadInfos() guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) guiSetText ( aTab1.CountryCode, "" ) end + guiSetText ( aTab3.Password, "Password: "..getSensitiveText( serverPassword ) ) end function updateColorCodes() From aea3a6cf7b9055ee512a5f1c759d9a880700c4fc Mon Sep 17 00:00:00 2001 From: Breno Danyel <38073795+iDannz-Breno@users.noreply.github.com> Date: Sat, 17 Apr 2021 16:42:40 -0300 Subject: [PATCH 14/16] Update [admin]/admin/client/gui/admin_message.lua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gabrielius Laurinavičius --- [admin]/admin/client/gui/admin_message.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_message.lua b/[admin]/admin/client/gui/admin_message.lua index 5037816be..cdb6d5395 100644 --- a/[admin]/admin/client/gui/admin_message.lua +++ b/[admin]/admin/client/gui/admin_message.lua @@ -68,7 +68,8 @@ function aViewSuspectInfo ( button ) aSuspectInfo = nil end, false) - local text = { + local displayInfo = { + 'Nickname: '.. removeColorCoding(suspectInfo.name), 'Account name: '.. getSensitiveText(suspectInfo.username), 'IP: '.. getSensitiveText(suspectInfo.ip), From a1b480d36a9f5ff1fe1eb048043aac1ab83af4c7 Mon Sep 17 00:00:00 2001 From: Breno Danyel <38073795+iDannz-Breno@users.noreply.github.com> Date: Sat, 17 Apr 2021 16:43:35 -0300 Subject: [PATCH 15/16] Update [admin]/admin/client/gui/admin_message.lua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gabrielius Laurinavičius --- [admin]/admin/client/gui/admin_message.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_message.lua b/[admin]/admin/client/gui/admin_message.lua index cdb6d5395..ae868861b 100644 --- a/[admin]/admin/client/gui/admin_message.lua +++ b/[admin]/admin/client/gui/admin_message.lua @@ -75,7 +75,8 @@ function aViewSuspectInfo ( button ) 'IP: '.. getSensitiveText(suspectInfo.ip), 'Serial: '.. getSensitiveText(suspectInfo.serial), 'MTA version: '.. suspectInfo.version, - 'Chat log: '.. suspectInfo.chatLog, + '\nChat log:\n' .. suspectInfo.chatLog, + } local text = table.concat(displayInfo, '\n') From 1afe7b544ac47bc6d6b99ffa66e0fde17c8a119f Mon Sep 17 00:00:00 2001 From: Breno Danyel Date: Sat, 17 Apr 2021 16:46:29 -0300 Subject: [PATCH 16/16] fix "Name" label not showing the entire text --- [admin]/admin/client/gui/admin_main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/client/gui/admin_main.lua b/[admin]/admin/client/gui/admin_main.lua index 4cb78f6b6..3c5f6d585 100644 --- a/[admin]/admin/client/gui/admin_main.lua +++ b/[admin]/admin/client/gui/admin_main.lua @@ -69,7 +69,7 @@ function aAdminMenu () local B = 0.035 -- Small line gap guiCreateHeader ( 0.25, y, 0.20, 0.04, "Player:", true, aTab1.Tab ) -y=y+A aTab1.Name = guiCreateLabel ( 0.26, y, 0.30, 0.035, "Name: N/A", true, aTab1.Tab ) +y=y+A aTab1.Name = guiCreateLabel ( 0.26, y, 0.435, 0.035, "Name: N/A", true, aTab1.Tab ) y=y+A aTab1.IP = guiCreateLabel ( 0.26, y, 0.30, 0.035, "IP: N/A", true, aTab1.Tab ) aTab1.CountryCode = guiCreateLabel ( 0.45, y, 0.04, 0.035, "", true, aTab1.Tab ) aTab1.Flag = guiCreateStaticImage ( 0.40, y, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab )