From 37d17db78d1c4bb6124f6d697b58bc7bfa456dc8 Mon Sep 17 00:00:00 2001
From: Linventif <gregoire.becue@proton.me>
Date: Tue, 9 Jul 2024 09:08:25 +0000
Subject: [PATCH] add: routine usergroup scan

---
 lua/gmod_integration/server/sv_sync_roles.lua | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/lua/gmod_integration/server/sv_sync_roles.lua b/lua/gmod_integration/server/sv_sync_roles.lua
index 393be49..920bc49 100644
--- a/lua/gmod_integration/server/sv_sync_roles.lua
+++ b/lua/gmod_integration/server/sv_sync_roles.lua
@@ -51,12 +51,23 @@ function gmInte.playerChangeGroup(steamID64, oldGroup, newGroup)
     })
 end
 
-hook.Add("CAMI.PlayerUsergroupChanged", "gmInte:SyncChat:CAMI:PlayerUsergroupChanged", function(ply, old, new)
+// CAMI
+hook.Add("CAMI.PlayerUsergroupChanged", "gmInte:SyncRoles:CAMI:PlayerUsergroupChanged", function(ply, old, new)
     if ply:IsBot() || !ply:IsValid() then return end
     gmInte.playerChangeGroup(ply:SteamID64(), old, new)
 end)
 
-hook.Add("CAMI.SteamIDUsergroupChanged", "gmInte:SyncChat:CAMI:SteamIDUsergroupChanged", function(SteamID64, old, new)
+hook.Add("CAMI.SteamIDUsergroupChanged", "gmInte:SyncRoles:CAMI:SteamIDUsergroupChanged", function(SteamID64, old, new)
     if string.StartWith(SteamID64, "STEAM_") then SteamID64 = util.SteamIDTo64(SteamID64) end
     gmInte.playerChangeGroup(SteamID64, old, new)
+end)
+
+// For those who refuse to use CAMI (bro, WTF), routine scan
+local lastScan = {}
+timer.Create("gmInte:SyncRoles:PlayerScan", 3, 0, function()
+    for k, v in ipairs(player.GetAll()) do
+        if lastScan[v:SteamID64()] == v:GetUserGroup() then continue end
+        gmInte.playerChangeGroup(v:SteamID64(), lastScan[v:SteamID64()], v:GetUserGroup())
+        lastScan[v:SteamID64()] = v:GetUserGroup()
+    end
 end)
\ No newline at end of file