mirror of
https://github.com/gmod-integration/lua.git
synced 2025-03-15 22:07:34 +00:00
Feat: add ajustTime for reconnect after map change
This commit is contained in:
parent
0a7ae28a75
commit
4ab93e1afe
|
@ -10,7 +10,8 @@ function gmInte.getPlayerFormat(ply)
|
||||||
["kills"] = ply:Frags(),
|
["kills"] = ply:Frags(),
|
||||||
["deaths"] = ply:Deaths(),
|
["deaths"] = ply:Deaths(),
|
||||||
["customValues"] = ply:gmIntGetCustomValues(),
|
["customValues"] = ply:gmIntGetCustomValues(),
|
||||||
["connectTime"] = math.Round(RealTime() - ply:gmIntGetConnectTime()),
|
["connectTime"] = math.Round(math.Round(RealTime() - ply:gmIntGetConnectTime())),
|
||||||
|
["ajustTime"] = math.Round(ply:getAjustTime()),
|
||||||
["ping"] = ply:Ping(),
|
["ping"] = ply:Ping(),
|
||||||
["fps"] = ply:gmIntGetFPS(),
|
["fps"] = ply:gmIntGetFPS(),
|
||||||
["position"] = gmInte.getVectorFormat(ply:GetPos()),
|
["position"] = gmInte.getVectorFormat(ply:GetPos()),
|
||||||
|
|
|
@ -69,7 +69,60 @@ end
|
||||||
function ply:gmIntGetCustomValues()
|
function ply:gmIntGetCustomValues()
|
||||||
return getCustomValues(self)
|
return getCustomValues(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ply:gmIntGetFPS()
|
function ply:gmIntGetFPS()
|
||||||
return self.gmIntFPS || 0
|
return self.gmIntFPS || 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
// Backup players before map change
|
||||||
|
hook.Add("ShutDown", "gmInte:Server:ShutDown:SavePlayer", function()
|
||||||
|
// save in data/gm_integration/player_before_map_change.json
|
||||||
|
local dataToSave = {
|
||||||
|
["version"] = "1.0",
|
||||||
|
["serverID"] = gmInte.config.id,
|
||||||
|
["playersList"] = {},
|
||||||
|
["sysTime"] = os.time()
|
||||||
|
}
|
||||||
|
|
||||||
|
if SERVER then
|
||||||
|
for _, ply in ipairs(player.GetAll()) do
|
||||||
|
dataToSave.playersList[ply:SteamID()] = gmInte.getPlayerFormat(ply)
|
||||||
|
end
|
||||||
|
|
||||||
|
if !file.Exists("gm_integration", "DATA") then file.CreateDir("gm_integration") end
|
||||||
|
file.Write("gm_integration/player_before_map_change.json", util.TableToJSON(dataToSave, true))
|
||||||
|
else
|
||||||
|
dataToSave.playersList[LocalPlayer():SteamID()] = gmInte.getPlayerFormat(LocalPlayer())
|
||||||
|
local oldData = {}
|
||||||
|
if file.Exists("gmod_integration/player_before_map_change.json", "DATA") then oldData = util.JSONToTable(file.Read("gmod_integration/player_before_map_change.json", "DATA")) end
|
||||||
|
oldData[gmInte.config.id] = dataToSave
|
||||||
|
file.Write("gmod_integration/player_before_map_change.json", util.TableToJSON(oldData, true))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
gmInte.restoreFileCache = gmInte.restoreFileCache || {}
|
||||||
|
function ply:getAjustTime()
|
||||||
|
if SERVER then
|
||||||
|
if table.IsEmpty(gmInte.restoreFileCache) then
|
||||||
|
if file.Exists("gm_integration/player_before_map_change.json", "DATA") then
|
||||||
|
gmInte.restoreFileCache = util.JSONToTable(file.Read("gm_integration/player_before_map_change.json", "DATA"))
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if table.IsEmpty(gmInte.restoreFileCache) then
|
||||||
|
if file.Exists("gmod_integration/player_before_map_change.json", "DATA") then
|
||||||
|
gmInte.restoreFileCache = util.JSONToTable(file.Read("gmod_integration/player_before_map_change.json", "DATA"))
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
gmInte.restoreFileCache = gmInte.restoreFileCache[gmInte.config.id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (gmInte.restoreFileCache.sysTime + 60 * 5) < (os.time() - self:gmIntGetConnectTime()) then return 0 end
|
||||||
|
if !gmInte.restoreFileCache.playersList || !gmInte.restoreFileCache.playersList[self:SteamID()] then return 0 end
|
||||||
|
return gmInte.restoreFileCache.playersList[self:SteamID()].connectTime || 0
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user