From 499c3820661a1c15f4d81a7c6143e1d213019414 Mon Sep 17 00:00:00 2001 From: Linventif Date: Thu, 20 Mar 2025 05:47:46 +0000 Subject: [PATCH] feat: add a hook GMI:SaveBeforeCrash for trisomic server owner how crash server to auto reconnect client --- lua/gmod_integration/server/sv_players.lua | 8 +++++--- lua/gmod_integration/shared/sh_http.lua | 1 + lua/gmod_integration/shared/sh_player_meta.lua | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lua/gmod_integration/server/sv_players.lua b/lua/gmod_integration/server/sv_players.lua index e81da15..565ab1e 100644 --- a/lua/gmod_integration/server/sv_players.lua +++ b/lua/gmod_integration/server/sv_players.lua @@ -97,14 +97,16 @@ function gmInte.postLogPlayerGive(ply, class, swep) }) end -hook.Add("gmInte:PlayerReady", "gmInte:Player:Ready", function(ply) gmInte.playerReady(ply) end) -hook.Add("ShutDown", "gmInte:Server:Shutdown:SavePlayers", function() +local function savePlyDisconnect() for _, ply in ipairs(player.GetAll()) do gmInte.playerDisconnected(ply) end -end) +end gameevent.Listen("player_connect") +hook.Add("ShutDown", "gmInte:Server:Shutdown:SavePlayers", savePlyDisconnect) +hook.Add("GMI:SaveBeforeCrash", "gmInte:Server:BeforeCrash:SavePlayers", savePlyDisconnect) +hook.Add("gmInte:PlayerReady", "gmInte:Player:Ready", function(ply) gmInte.playerReady(ply) end) hook.Add("player_connect", "gmInte:Player:Connect", function(data) gmInte.playerConnect(data) end) hook.Add("PlayerDisconnected", "gmInte:Player:Disconnect", function(ply) gmInte.playerDisconnected(ply) end) hook.Add("PlayerSpawn", "gmInte:Player:Spawn", function(ply) gmInte.playerSpawn(ply) end) diff --git a/lua/gmod_integration/shared/sh_http.lua b/lua/gmod_integration/shared/sh_http.lua index ebff3b3..e59a9dd 100644 --- a/lua/gmod_integration/shared/sh_http.lua +++ b/lua/gmod_integration/shared/sh_http.lua @@ -108,6 +108,7 @@ local function flushLogs() end hook.Add("ShutDown", "gmInte:Server:ShutDown:FlushLogs", flushLogs) +hook.Add("GMI:SaveBeforeCrash", "gmInte:Server:BeforeCrash:SavePlayers", flushLogs) timer.Create("gmInte:http:flushLogs", 3, 0, flushLogs) function gmInte.http.postLog(endpoint, data) table.insert(nextLogPacket, { diff --git a/lua/gmod_integration/shared/sh_player_meta.lua b/lua/gmod_integration/shared/sh_player_meta.lua index 4ba915e..3b3a431 100644 --- a/lua/gmod_integration/shared/sh_player_meta.lua +++ b/lua/gmod_integration/shared/sh_player_meta.lua @@ -129,7 +129,7 @@ if SERVER then end) end -hook.Add("ShutDown", "gmInte:Server:ShutDown:SavePlayer", function() +local function saveTimeToLocal() local dataToSave = { ["version"] = "1.0", ["serverID"] = gmInte.config.id, @@ -151,4 +151,7 @@ hook.Add("ShutDown", "gmInte:Server:ShutDown:SavePlayer", function() oldData[gmInte.config.id] = dataToSave file.Write("gmod_integration/player_before_map_change.json", util.TableToJSON(oldData, true)) end -end) \ No newline at end of file +end + +hook.Add("ShutDown", "gmInte:Server:ShutDown:SavePlayer", saveTimeToLocal) +hook.Add("GMI:SaveBeforeCrash", "gmInte:Server:BeforeCrash:SavePlayers", saveTimeToLocal) \ No newline at end of file