From f6f84f9eea8a822814d6f6d2c3719e3dfee88208 Mon Sep 17 00:00:00 2001 From: Sarrum Date: Fri, 16 Apr 2021 02:49:05 +0300 Subject: [PATCH 1/5] Optimize bandwidth usage --- [admin]/admin/client/gui/admin_screenshot.lua | 10 +++++----- [admin]/admin/server/admin_screenshot.lua | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[admin]/admin/client/gui/admin_screenshot.lua b/[admin]/admin/client/gui/admin_screenshot.lua index e6671f820..57b4c9a5d 100644 --- a/[admin]/admin/client/gui/admin_screenshot.lua +++ b/[admin]/admin/client/gui/admin_screenshot.lua @@ -36,7 +36,7 @@ end function aScreenShotsRefresh () if aScreenShotList then guiGridListClear(aScreenShotList) - triggerServerEvent("aScreenShot",resourceRoot,"list",localPlayer) + triggerServerEvent("aScreenShot",resourceRoot,"list") end end @@ -54,7 +54,7 @@ function aScreenShotsDoubleClick (button) if source == aScreenShotList then local row = guiGridListGetSelectedItem(aScreenShotList) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"view",localPlayer,guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",resourceRoot,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) end end end @@ -69,12 +69,12 @@ function aScreenShotsClick (button) aMessageBox("error","No player selected!") else local name = guiGridListGetItemPlayerName(aTab1.PlayerList,guiGridListGetSelectedItem(aTab1.PlayerList),1) - triggerServerEvent("aScreenShot",resourceRoot,"new",localPlayer,getPlayerFromNick(name)) + triggerServerEvent("aScreenShot",resourceRoot,"new",getPlayerFromNick(name)) end elseif source == aScreenShotDelete then local row = guiGridListGetSelectedItem ( aScreenShotList ) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"delete",localPlayer,guiGridListGetItemData(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",resourceRoot,"delete",guiGridListGetItemData(aScreenShotList,row,1)) guiGridListRemoveRow(aScreenShotList,row) end elseif source == aScreenShotRefresh then @@ -82,7 +82,7 @@ function aScreenShotsClick (button) elseif source == aScreenShotView then local row = guiGridListGetSelectedItem(aScreenShotList) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"view",localPlayer,guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",resourceRoot,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) end else for player,gui in pairs (aScreenShotWindows) do diff --git a/[admin]/admin/server/admin_screenshot.lua b/[admin]/admin/server/admin_screenshot.lua index 5bbd54886..787bdb9e3 100644 --- a/[admin]/admin/server/admin_screenshot.lua +++ b/[admin]/admin/server/admin_screenshot.lua @@ -29,7 +29,8 @@ end addEvent("aScreenShot",true) addEventHandler("aScreenShot",resourceRoot, - function (action,admin,player,arg1,arg2) + function (action,player,arg1) + local admin = client if not isElement(admin) then return end if not hasObjectPermissionTo(admin,"command.takescreenshot") then return end if action == "new" then From 80bba204dd63caa6784cf35f6274f38ce0a2f639 Mon Sep 17 00:00:00 2001 From: Sarrum Date: Fri, 16 Apr 2021 03:08:12 +0300 Subject: [PATCH 2/5] Tweak permission check --- [admin]/admin/server/admin_screenshot.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[admin]/admin/server/admin_screenshot.lua b/[admin]/admin/server/admin_screenshot.lua index 787bdb9e3..30b497512 100644 --- a/[admin]/admin/server/admin_screenshot.lua +++ b/[admin]/admin/server/admin_screenshot.lua @@ -32,7 +32,7 @@ addEventHandler("aScreenShot",resourceRoot, function (action,player,arg1) local admin = client if not isElement(admin) then return end - if not hasObjectPermissionTo(admin,"command.takescreenshot") then return end + if not hasObjectPermissionTo(admin,"general.adminpanel") then return end if action == "new" then if not isElement(player) then return end if screenshots[player] then From 09bac66c24b19a6424cf7a4efab104f47893d4fa Mon Sep 17 00:00:00 2001 From: Sarrum Date: Wed, 5 May 2021 00:23:02 +0300 Subject: [PATCH 3/5] Add new rights --- [admin]/admin/client/gui/admin_screenshot.lua | 12 +++++++----- [admin]/admin/server/admin_screenshot.lua | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/[admin]/admin/client/gui/admin_screenshot.lua b/[admin]/admin/client/gui/admin_screenshot.lua index 57b4c9a5d..8b1e78ba5 100644 --- a/[admin]/admin/client/gui/admin_screenshot.lua +++ b/[admin]/admin/client/gui/admin_screenshot.lua @@ -16,10 +16,10 @@ function aPlayerScreenShot (player) local x,y = guiGetScreenSize() aScreenShotForm = guiCreateWindow ( x / 2 - 300, y / 2 - 125, 600, 250, "Screenshot Management", false ) aScreenShotList = guiCreateGridList ( 0.03, 0.08, 0.70, 0.90, true, aScreenShotForm ) - aScreenShotNew = guiCreateButton ( 0.75, 0.08, 0.42, 0.09, "Take New", true, aScreenShotForm ) - aScreenShotDelete = guiCreateButton ( 0.75, 0.18, 0.42, 0.09, "Delete", true, aScreenShotForm ) - aScreenShotView = guiCreateButton ( 0.75, 0.28, 0.42, 0.09, "View", true, aScreenShotForm ) - aScreenShotRefresh = guiCreateButton ( 0.75, 0.38, 0.42, 0.09, "Refresh", true, aScreenShotForm ) + aScreenShotNew = guiCreateButton ( 0.75, 0.08, 0.42, 0.09, "Take New", true, aScreenShotForm, "takescreenshot" ) + aScreenShotDelete = guiCreateButton ( 0.75, 0.18, 0.42, 0.09, "Delete", true, aScreenShotForm, "deletescreenshot" ) + aScreenShotView = guiCreateButton ( 0.75, 0.28, 0.42, 0.09, "View", true, aScreenShotForm, "viewscreenshot" ) + aScreenShotRefresh = guiCreateButton ( 0.75, 0.38, 0.42, 0.09, "Refresh", true, aScreenShotForm, "listscreenshots" ) aScreenShotClose = guiCreateButton ( 0.75, 0.88, 0.42, 0.09, "Close", true, aScreenShotForm ) guiGridListAddColumn(aScreenShotList,"Player",0.31 ) guiGridListAddColumn(aScreenShotList,"Admin",0.31 ) @@ -36,7 +36,9 @@ end function aScreenShotsRefresh () if aScreenShotList then guiGridListClear(aScreenShotList) - triggerServerEvent("aScreenShot",resourceRoot,"list") + if hasPermissionTo("command.listscreenshots") then + triggerServerEvent("aScreenShot",resourceRoot,"list") + end end end diff --git a/[admin]/admin/server/admin_screenshot.lua b/[admin]/admin/server/admin_screenshot.lua index 30b497512..b38369b6a 100644 --- a/[admin]/admin/server/admin_screenshot.lua +++ b/[admin]/admin/server/admin_screenshot.lua @@ -10,12 +10,20 @@ local con = dbConnect("sqlite", ":/registry.db") dbExec(con, "CREATE TABLE IF NOT EXISTS `admin_screenshots` (`id` INTEGER, `player` TEXT, `serial` TEXT, `admin` TEXT, `realtime` TEXT)") + local screenshots = {} local currentid = 0 +local rights = { + ["new"] = "takescreenshot", + ["delete"] = "deletescreenshot", + ["view"] = "viewscreenshot", + ["list"] = "listscreenshots" +} -addEventHandler("onResourceStart", resourceRoot, function() - dbQuery(resourceStartedCallback, {}, con, "SELECT `id` FROM `admin_screenshots`") -end +addEventHandler("onResourceStart", resourceRoot, + function() + dbQuery(resourceStartedCallback, {}, con, "SELECT `id` FROM `admin_screenshots`") + end ) function resourceStartedCallback(qh) @@ -32,7 +40,9 @@ addEventHandler("aScreenShot",resourceRoot, function (action,player,arg1) local admin = client if not isElement(admin) then return end - if not hasObjectPermissionTo(admin,"general.adminpanel") then return end + if not action then return end + local right = rights[action] + if not right or not hasObjectPermissionTo(admin,"command."..right) then return end if action == "new" then if not isElement(player) then return end if screenshots[player] then From 8e53897202fa4da918c9fdbe50ea344cbd8dee28 Mon Sep 17 00:00:00 2001 From: Sarrum Date: Wed, 5 May 2021 00:25:04 +0300 Subject: [PATCH 4/5] Update ACL.xml --- [admin]/admin/conf/ACL.xml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/[admin]/admin/conf/ACL.xml b/[admin]/admin/conf/ACL.xml index b6127945b..c8b61ed9b 100644 --- a/[admin]/admin/conf/ACL.xml +++ b/[admin]/admin/conf/ACL.xml @@ -81,6 +81,11 @@ + + + + + @@ -96,7 +101,7 @@ - + @@ -157,6 +162,11 @@ + + + + + @@ -233,6 +243,11 @@ + + + + + @@ -310,5 +325,10 @@ + + + + + From 33ceba04fe83307a94b858874cb69bb84f9a47f9 Mon Sep 17 00:00:00 2001 From: Sarrum Date: Wed, 5 May 2021 23:19:52 +0300 Subject: [PATCH 5/5] Use the lowest possible element --- [admin]/admin/client/gui/admin_screenshot.lua | 10 +++++----- [admin]/admin/server/admin_screenshot.lua | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[admin]/admin/client/gui/admin_screenshot.lua b/[admin]/admin/client/gui/admin_screenshot.lua index 8b1e78ba5..ec83f6af5 100644 --- a/[admin]/admin/client/gui/admin_screenshot.lua +++ b/[admin]/admin/client/gui/admin_screenshot.lua @@ -37,7 +37,7 @@ function aScreenShotsRefresh () if aScreenShotList then guiGridListClear(aScreenShotList) if hasPermissionTo("command.listscreenshots") then - triggerServerEvent("aScreenShot",resourceRoot,"list") + triggerServerEvent("aScreenShot",localPlayer,"list") end end end @@ -56,7 +56,7 @@ function aScreenShotsDoubleClick (button) if source == aScreenShotList then local row = guiGridListGetSelectedItem(aScreenShotList) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",localPlayer,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) end end end @@ -71,12 +71,12 @@ function aScreenShotsClick (button) aMessageBox("error","No player selected!") else local name = guiGridListGetItemPlayerName(aTab1.PlayerList,guiGridListGetSelectedItem(aTab1.PlayerList),1) - triggerServerEvent("aScreenShot",resourceRoot,"new",getPlayerFromNick(name)) + triggerServerEvent("aScreenShot",localPlayer,"new",getPlayerFromNick(name)) end elseif source == aScreenShotDelete then local row = guiGridListGetSelectedItem ( aScreenShotList ) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"delete",guiGridListGetItemData(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",localPlayer,"delete",guiGridListGetItemData(aScreenShotList,row,1)) guiGridListRemoveRow(aScreenShotList,row) end elseif source == aScreenShotRefresh then @@ -84,7 +84,7 @@ function aScreenShotsClick (button) elseif source == aScreenShotView then local row = guiGridListGetSelectedItem(aScreenShotList) if row ~= -1 then - triggerServerEvent("aScreenShot",resourceRoot,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) + triggerServerEvent("aScreenShot",localPlayer,"view",guiGridListGetItemData(aScreenShotList,row,1),guiGridListGetItemText(aScreenShotList,row,1)) end else for player,gui in pairs (aScreenShotWindows) do diff --git a/[admin]/admin/server/admin_screenshot.lua b/[admin]/admin/server/admin_screenshot.lua index b38369b6a..4961abce1 100644 --- a/[admin]/admin/server/admin_screenshot.lua +++ b/[admin]/admin/server/admin_screenshot.lua @@ -36,7 +36,7 @@ function resourceStartedCallback(qh) end addEvent("aScreenShot",true) -addEventHandler("aScreenShot",resourceRoot, +addEventHandler("aScreenShot",root, function (action,player,arg1) local admin = client if not isElement(admin) then return end