From b66e088811e5e990bae10ecca6114f2cd3aea260 Mon Sep 17 00:00:00 2001 From: Linventif Date: Sat, 16 Dec 2023 15:02:03 +0100 Subject: [PATCH] Remove debug flag and add config option for debug --- lua/autorun/gmod_integration.lua | 1 - lua/gmod_integration/client/cl_gui.lua | 221 ++++++++++++------ lua/gmod_integration/client/cl_main.lua | 5 +- lua/gmod_integration/server/sv__websocket.lua | 2 +- lua/gmod_integration/server/sv_main.lua | 8 +- lua/gmod_integration/shared/sh_http.lua | 2 +- lua/gmod_integration/shared/sh_main.lua | 8 +- lua/gmod_integration/sv_config.lua | 1 + 8 files changed, 158 insertions(+), 90 deletions(-) diff --git a/lua/autorun/gmod_integration.lua b/lua/autorun/gmod_integration.lua index b913bdc..3c29804 100644 --- a/lua/autorun/gmod_integration.lua +++ b/lua/autorun/gmod_integration.lua @@ -9,7 +9,6 @@ gmInte.version = "0.1.8" gmInte.config = { ["redownloadMaterials"] = false, } -gmInte.debug = false gmInte.materials = {} // diff --git a/lua/gmod_integration/client/cl_gui.lua b/lua/gmod_integration/client/cl_gui.lua index 3914200..10183ea 100644 --- a/lua/gmod_integration/client/cl_gui.lua +++ b/lua/gmod_integration/client/cl_gui.lua @@ -7,7 +7,9 @@ end local configCat = { "Authentication", "Main", - "Trust & Safety" + "Trust & Safety", + "Punishment", + "Other" } local possibleConfig = { @@ -15,11 +17,11 @@ local possibleConfig = { ["label"] = "ID", ["description"] = "Your server ID. You can find it on the webpanel.", ["type"] = "textEntry", - ["value"] = function(value) + ["value"] = function(setting, value) return value end, - ["onEdit"] = function(value) - saveConfig("id", value) + ["onEdit"] = function(setting, value) + saveConfig(setting, value) end, ["onEditDelay"] = 0.5, ["category"] = "Authentication" @@ -28,11 +30,11 @@ local possibleConfig = { ["label"] = "Token", ["description"] = "Your server Token. You can find it on the webpanel.", ["type"] = "textEntry", - ["value"] = function(value) + ["value"] = function(setting, value) return value end, - ["onEdit"] = function(value) - saveConfig("token", value) + ["onEdit"] = function(setting, value) + saveConfig(setting, value) end, ["onEditDelay"] = 0.5, ["category"] = "Authentication" @@ -41,11 +43,11 @@ local possibleConfig = { ["label"] = "Logs", ["description"] = "Activate or deactivate the logs.", ["type"] = "checkbox", - ["value"] = function(value) + ["value"] = function(setting, value) return value end, - ["onEdit"] = function(value) - saveConfig("disableLog", value == "Enabled" && true || false) + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) end, ["category"] = "Main" }, @@ -53,11 +55,11 @@ local possibleConfig = { ["label"] = "Block Discord Ban Player", ["description"] = "Block players that are banned on the discord server.", ["type"] = "checkbox", - ["value"] = function(value) + ["value"] = function(setting, value) return value end, - ["onEdit"] = function(value) - saveConfig("disableLog", value == "Enabled" && true || false) + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) end, ["category"] = "Trust & Safety" }, @@ -65,14 +67,112 @@ local possibleConfig = { ["label"] = "Block UnTrust Player", ["description"] = "", ["type"] = "checkbox", - ["value"] = function(value) + ["value"] = function(setting, value) return value end, - ["onEdit"] = function(value) - saveConfig("disableLog", value == "Enabled" && true || false) + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) end, ["category"] = "Trust & Safety" }, + ["minimalTrust"] = { + ["label"] = "Minimal Trust Level", + ["description"] = "Your server ID. You can find it on the webpanel.", + ["type"] = "textEntry", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value) + end, + ["onEditDelay"] = 0.5, + ["category"] = "Trust & Safety" + }, + ["syncChat"] = { + ["label"] = "Sync Chat", + ["description"] = "Sync the chat between the server and the discord server.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Main" + }, + ["syncBan"] = { + ["label"] = "Sync Ban", + ["description"] = "Sync the chat between the server and the discord server.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Punishment" + }, + ["syncTimeout"] = { + ["label"] = "Sync Timeout", + ["description"] = "Sync the chat between the server and the discord server.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Punishment" + }, + ["syncKick"] = { + ["label"] = "Sync Kick", + ["description"] = "Sync the chat between the server and the discord server.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Punishment" + }, + ["forcePlayerLink"] = { + ["label"] = "Force Player Verif", + ["description"] = "Sync the chat between the server and the discord server.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Main" + }, + ["supportLink"] = { + ["label"] = "Support Link", + ["description"] = "Your server ID. You can find it on the webpanel.", + ["type"] = "textEntry", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value) + end, + ["onEditDelay"] = 0.5, + ["category"] = "Trust & Safety" + }, + ["debug"] = { + ["label"] = "Debug", + ["description"] = "Activate or deactivate the debug mode.", + ["type"] = "checkbox", + ["value"] = function(setting, value) + return value + end, + ["onEdit"] = function(setting, value) + saveConfig(setting, value == "Enabled" && true || false) + end, + ["category"] = "Other" + }, } local buttonsInfo = { @@ -83,17 +183,11 @@ local buttonsInfo = { end, }, { - ["try"] = "Test Connection", + ["label"] = "Test Connection", ["func"] = function() gmInte.SendNet("1") end, }, - { - ["try"] = "Tdest Connection", - ["func"] = function() - gmInte.SendNet("1") - end, - } } function gmInte.openConfigMenu(data) @@ -112,6 +206,7 @@ function gmInte.openConfigMenu(data) local messagePanel = vgui.Create("DPanel", scrollPanel) messagePanel:Dock(TOP) messagePanel:SetSize(300, 60) + messagePanel:DockMargin(10, 0, 10, 10) messagePanel:SetBackgroundColor(Color(0, 0, 0, 0)) local messageLabel = vgui.Create("DLabel", messagePanel) @@ -124,7 +219,7 @@ function gmInte.openConfigMenu(data) // create DCollapsibleCategory local collapsibleCategory = vgui.Create("DCollapsibleCategory", scrollPanel) collapsibleCategory:Dock(TOP) - collapsibleCategory:DockMargin(0, 0, 0, 5) + collapsibleCategory:DockMargin(10, 0, 10, 10) collapsibleCategory:SetLabel(catName) collapsibleCategory:SetExpanded(true) @@ -153,14 +248,14 @@ function gmInte.openConfigMenu(data) if v.type == "textEntry" then input = vgui.Create("DTextEntry", panel) - input:SetText(v.value(data[k])) + input:SetText(v.value(k, data[k])) local isLastID = 0 input.OnChange = function(self) isLastID = isLastID + 1 local isLocalLastID = isLastID timer.Simple(v.onEditDelay || 0.5, function() if isLocalLastID == isLastID then - v.onEdit(self:GetValue()) + v.onEdit(k, self:GetValue()) end end) end @@ -168,9 +263,9 @@ function gmInte.openConfigMenu(data) input = vgui.Create("DComboBox", panel) input:AddChoice("Enabled") input:AddChoice("Disabled") - input:SetText(v.value(data[k]) && "Enabled" || "Disabled") + input:SetText(v.value(k, data[k]) && "Enabled" || "Disabled") input.OnSelect = function(self, index, value) - v.onEdit(value) + v.onEdit(k, value) end end @@ -178,7 +273,7 @@ function gmInte.openConfigMenu(data) input:SetSize(150, 25) if v.description then - panel:SetTooltip(v.description) + input:SetTooltip(v.description) end configList:AddItem(panel) @@ -186,61 +281,35 @@ function gmInte.openConfigMenu(data) end end - local buttonsPanel = vgui.Create("DPanel", frame) - buttonsPanel:Dock(BOTTOM) - buttonsPanel:SetSize(300, 50) - buttonsPanel:SetBackgroundColor(Color(0, 0, 0, 0)) - - local buttonRows = {} - local currentRow = nil + // grid of buttons (2 buttons per row take 50% of the width) + local buttonGrid = vgui.Create("DGrid", frame) + buttonGrid:Dock(BOTTOM) + buttonGrid:DockMargin(5, 10, 5, 5) + buttonGrid:SetCols(2) + buttonGrid:SetColWide(frame:GetWide() / 2 - 10) + buttonGrid:SetRowHeight(35) for k, v in pairs(buttonsInfo) do - if k % 2 == 1 then - currentRow = vgui.Create("DPanel", buttonsPanel) - currentRow:Dock(TOP) - currentRow:SetSize(300, 25) - currentRow:SetBackgroundColor(Color(0, 0, 0, 0)) - table.insert(buttonRows, currentRow) - end - - local button = vgui.Create("DButton", currentRow) - button:Dock(k % 2 == 1 && LEFT || RIGHT) - button:SetText(v.label or v.try) - button:SetWide(button:GetParent():GetWide() / 2) - + local button = vgui.Create("DButton") + button:SetText(v.label) button.DoClick = function() v.func() end + button:SetSize(buttonGrid:GetColWide(), buttonGrid:GetRowHeight()) + buttonGrid:AddItem(button) end end -// Add on Desktop Widgets --- Vérifie si l'interface utilisateur de widgets existe et la crée si ce n'est pas le cas -if not MyWidget then - MyWidget = {} -end - --- Fonction pour créer le widget -function MyWidget.CreateWidget() - local frame = vgui.Create("DFrame") - frame:SetSize(200, 100) - frame:SetTitle("Mon Widget") - frame:MakePopup() - - -- Ajouter d'autres éléments à votre widget ici - - return frame -end - list.Set("DesktopWindows", "GmodIntegration:DesktopWindows", { - icon = "icon64/gmodintegration.png", - title = "Gmod Integration", - width = 100, - height = 100, - onewindow = true, - init = function(icon, window) - window:Close() + // use icon 'gear' + icon = "icon16/wrench.png", + title = "Gmod Integration", + width = 32, + height = 32, + onewindow = true, + init = function(icon, window) + window:Close() gmInte.openAdminConfig() - end - } + end + } ) \ No newline at end of file diff --git a/lua/gmod_integration/client/cl_main.lua b/lua/gmod_integration/client/cl_main.lua index 484d427..7f07efd 100644 --- a/lua/gmod_integration/client/cl_main.lua +++ b/lua/gmod_integration/client/cl_main.lua @@ -25,7 +25,10 @@ function gmInte.showTestConnection(data) end function gmInte.openAdminConfig() - if (!LocalPlayer():IsSuperAdmin()) then return end + if (!LocalPlayer():IsSuperAdmin()) then + chat.AddText(Color(255, 130, 92), "[Gmod Integration] ", Color(102, 63, 63), "You are not superadmin") + return + end gmInte.SendNet("2") end diff --git a/lua/gmod_integration/server/sv__websocket.lua b/lua/gmod_integration/server/sv__websocket.lua index 291a065..fbebd73 100644 --- a/lua/gmod_integration/server/sv__websocket.lua +++ b/lua/gmod_integration/server/sv__websocket.lua @@ -22,7 +22,7 @@ end function socket:onMessage(txt) gmInte.log("WebSocket Message: " .. txt, true) local data = util.JSONToTable(txt) - if (gmInte.debug) then + if (gmInte.config.debug) then gmInte.log("WebSocket Message: " .. txt, true) end if (gmInte[data.method]) then diff --git a/lua/gmod_integration/server/sv_main.lua b/lua/gmod_integration/server/sv_main.lua index 8e6a237..d354fc6 100644 --- a/lua/gmod_integration/server/sv_main.lua +++ b/lua/gmod_integration/server/sv_main.lua @@ -256,12 +256,8 @@ end function gmInte.superadminSetConfig(ply, data) if (!gmInte.plyValid(ply) || !ply:IsSuperAdmin()) then return end - if data.id then - gmInte.saveSetting("id", data.id) - end - - if data.token then - gmInte.saveSetting("token", data.token) + for k, v in pairs(data) do + gmInte.saveSetting(k, v) end if data.token || data.id then diff --git a/lua/gmod_integration/shared/sh_http.lua b/lua/gmod_integration/shared/sh_http.lua index 6051592..e435d24 100644 --- a/lua/gmod_integration/shared/sh_http.lua +++ b/lua/gmod_integration/shared/sh_http.lua @@ -46,7 +46,7 @@ local function sendHTTP(params) success = function(code, body, headers) // Log the HTTP response gmInte.log("HTTP Response: " .. code, true) - if (gmInte.debug) then gmInte.log("HTTP Body: " .. body, true) end + if (gmInte.config.debug) then gmInte.log("HTTP Body: " .. body, true) end // if body and is json extract it if (body && string.sub(headers["Content-Type"], 1, 16) == "application/json") then diff --git a/lua/gmod_integration/shared/sh_main.lua b/lua/gmod_integration/shared/sh_main.lua index d1459df..e5e2a44 100644 --- a/lua/gmod_integration/shared/sh_main.lua +++ b/lua/gmod_integration/shared/sh_main.lua @@ -4,27 +4,27 @@ // Log function gmInte.log(msg, debug) - if (debug && !gmInte.debug) then return end + if (debug && !gmInte.config.debug) then return end print("[" .. os.date("%Y-%m-%d %H:%M:%S") .. "] [Gmod Integration] " .. msg) end // Log Error function gmInte.logError(msg, debug) - if (debug && !gmInte.debug) then return end + if (debug && !gmInte.config.debug) then return end print("[" .. os.date("%Y-%m-%d %H:%M:%S") .. "] [Gmod Integration] [ERROR] " .. msg) if (debug) then print(debug.traceback()) end end // Log Warning function gmInte.logWarning(msg, debug) - if (debug && !gmInte.debug) then return end + if (debug && !gmInte.config.debug) then return end print("[" .. os.date("%Y-%m-%d %H:%M:%S") .. "] [Gmod Integration] [WARNING] " .. msg) if (debug) then print(debug.traceback()) end end // Log Hint function gmInte.logHint(msg, debug) - if (debug && !gmInte.debug) then return end + if (debug && !gmInte.config.debug) then return end print("[" .. os.date("%Y-%m-%d %H:%M:%S") .. "] [Gmod Integration] [HINT] " .. msg) if (debug) then print(debug.traceback()) end end \ No newline at end of file diff --git a/lua/gmod_integration/sv_config.lua b/lua/gmod_integration/sv_config.lua index 4807db7..20675b1 100644 --- a/lua/gmod_integration/sv_config.lua +++ b/lua/gmod_integration/sv_config.lua @@ -64,6 +64,7 @@ gmInte.config.chatTrigger = { // Other gmInte.config.forcePlayerLink = false // If true, the addon will force the players to link their discord account to their steam account before playing gmInte.config.supportLink = "" // The link of your support (shown when a player do not have the requiments to join the server) +gmInte.config.debug = false // If true, the addon will show debug informations in the console // // Syncronization