diff --git a/lua/gmod_integration/server/sv_con.lua b/lua/gmod_integration/server/sv_con.lua index 8c6f842..9ebe4f4 100644 --- a/lua/gmod_integration/server/sv_con.lua +++ b/lua/gmod_integration/server/sv_con.lua @@ -4,19 +4,17 @@ local conFuncs = { ["try"] = function() gmInte.tryConfig() end, ["refresh"] = function() gmInte.refreshSettings() end, ["get-server-id"] = function() print(gmInte.config.id || "none") end, - ["screenshot"] = function(args) - if !args[2] then return gmInte.log("No SteamID64 provided") end - for _, ply in pairs(player.GetAll()) do - if ply:SteamID64() == args[2] then return gmInte.takeScreenshot(ply) end - end - end, + ["export-warns"] = function() hook.Run("GmodIntegration:ExportWarns") end } -concommand.Add("gmi", function(ply, cmd, args) +local function cmdExecuted(ply, cmd, args) if ply:IsPlayer() && !ply:IsSuperAdmin() then return end if conFuncs[args[1]] then conFuncs[args[1]](args) else gmInte.log("Unknown Command Argument") end -end) \ No newline at end of file +end + +concommand.Add("gmi", cmdExecuted) +concommand.Add("gmod-integration", cmdExecjsonuted) \ No newline at end of file diff --git a/lua/gmod_integration/server/sv_sync_warn.lua b/lua/gmod_integration/server/sv_sync_warn.lua new file mode 100644 index 0000000..9b4a1c9 --- /dev/null +++ b/lua/gmod_integration/server/sv_sync_warn.lua @@ -0,0 +1,52 @@ +function gmInte.playerWarn(ply, admin, reason) + gmInte.http.post("/servers/:serverID/players/" .. ply:SteamID64() .. "/warns", { + ["player"] = gmInte.getPlayerFormat(ply), + ["admin"] = gmInte.getPlayerFormat(admin), + ["reason"] = reason + }) +end + +function gmInte.playerWarnID(plySteamID64, adminSteamID64, reason) + gmInte.http.post("/servers/:serverID/players/" .. plySteamID64 .. "/warns", { + ["adminSteamID64"] = adminSteamID64, + ["reason"] = reason + }) +end + +function gmInte.serverExportWarns(data) + gmInte.http.post("/servers/:serverID/warns", { + ["warns"] = data + }) +end + +if AWarn then + hook.Add("AWarnPlayerWarned", "AWarn3WarningDiscordRelay", function(pl, aID, reason) + local admin = AWarn:GetPlayerFromID64(aID) + if !admin then return end + gmInte.playerWarn(pl, admin, reason) + end) + + hook.Add("AWarnPlayerIDWarned", "AWarn3IDWarningDiscordRelay", function(pID, aID, reason) + local admin = AWarn:GetPlayerFromID64(aID) + if !admin then return end + gmInte.playerWarnID(pID, aID, reason) + end) + + hook.Add("GmodIntegration:ExportWarns", "AWarn3ExportWarns", function() + local query = "SELECT * FROM awarn3_warningtable" + AWarn3_MySQLite.query(query, function(result) + if !result then return end + local warns = {} + for k, v in pairs(result) do + table.insert(warns, { + playerSteamID64 = v.PlayerID, + adminSteamID64 = v.AdminID, + reason = v.WarningReason, + date = v.WarningDate + }) + end + + gmInte.serverExportWarns(warns) + end, function(err) gmInte.logError("AWarn3", "Failed to export warns: " .. err) end) + end) +end \ No newline at end of file