From 14bf8d0da9599f31f2b1767ba319126368c81275 Mon Sep 17 00:00:00 2001 From: kosmik641 Date: Sun, 14 Dec 2025 12:30:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B5=D0=B1=D0=B0=D0=B3=D0=B3=D0=B5?= =?UTF-8?q?=D1=80.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20metrostroi=5Fdebugger=5Fenabled=20=D0=92=D1=8B=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=20=D0=B4=D0=B5=D0=B1=D0=B0=D0=B3=D0=B3=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BE=D0=B1=D1=89=D1=83=D1=8E=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=D1=83=20Metrostroi.Debugger=20=D0=9F?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20=D1=81=D0=BE=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=20=D0=BA=D0=BE=D0=B4=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=B1=D0=B0=D0=B3=D0=B3=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/metrostroi/cl_debugger.lua | 15 +++++++----- lua/metrostroi/convars.lua | 2 -- lua/metrostroi/sv_debugger.lua | 42 +++++++++++++++++++++++++--------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/lua/metrostroi/cl_debugger.lua b/lua/metrostroi/cl_debugger.lua index 6e87c7a..bb092e5 100644 --- a/lua/metrostroi/cl_debugger.lua +++ b/lua/metrostroi/cl_debugger.lua @@ -7,13 +7,16 @@ To lower net usage, an array to map variable names to indexes is send to the cli the length of the table changes. Regular data packages only contain a nameless list of data. -]] -local Debugger = {} -Debugger.DisplayGroups = {} -Debugger.EntData = {} -Debugger.EntDataTime = {} -Debugger.EntNameMap = {} +local C_DebugDataTimeout = CreateClientConVar("metrostroi_debugger_data_timeout",2,true,false) +Metrostroi.Debugger = {} +Metrostroi.Debugger.DisplayGroups = {} +Metrostroi.Debugger.EntData = {} +Metrostroi.Debugger.EntDataTime = {} +Metrostroi.Debugger.EntNameMap = {} + +local Debugger = Metrostroi.Debugger local Colors = { {120,255,255}, {255,255,0}, @@ -589,7 +592,7 @@ end --Checks if we haven't gotten data from entid in a while local function isTimedOut(id) - local timeout = GetConVar("metrostroi_debugger_data_timeout"):GetFloat() + local timeout = C_DebugDataTimeout:GetFloat() return timeout ~= nil and timeout > 0 and CurTime() - Debugger.EntDataTime[id] > timeout end diff --git a/lua/metrostroi/convars.lua b/lua/metrostroi/convars.lua index 7cf0f62..d161804 100644 --- a/lua/metrostroi/convars.lua +++ b/lua/metrostroi/convars.lua @@ -5,7 +5,6 @@ end --Not sure about the quirks related to shared convars like this CreateConVar("metrostroi_train_requirethirdrail",1,FCVAR_ARCHIVE,"Whether or not Metrostroi trains require power from the third rail") -CreateConVar("metrostroi_debugger_update_interval",1,FCVAR_ARCHIVE,"Seconds between debugger data messages") CreateConVar("metrostroi_arsmode",1,FCVAR_ARCHIVE) CreateConVar("metrostroi_arsmode_nogreen",0,FCVAR_ARCHIVE) @@ -97,7 +96,6 @@ CreateClientConVar("metrostroi_cabz",0,true) CreateClientConVar("metrostroi_disablecamaccel",0,true) CreateClientConVar("metrostroi_disablehovertext",0,true) CreateClientConVar("metrostroi_disablehovertextpos",0,true) -CreateClientConVar("metrostroi_debugger_data_timeout",2,true,false) CreateClientConVar("metrostroi_disablehud",0,true) CreateClientConVar("metrostroi_renderdistance",1024,true) diff --git a/lua/metrostroi/sv_debugger.lua b/lua/metrostroi/sv_debugger.lua index ea43957..9f4f60f 100644 --- a/lua/metrostroi/sv_debugger.lua +++ b/lua/metrostroi/sv_debugger.lua @@ -1,7 +1,12 @@ -local Debugger = {} -Debugger.Clients = {} -Debugger.NameMap = {} -Debugger.EntVarCounts = {} +local C_DebugEnabled = CreateConVar("metrostroi_debugger_enabled",0,FCVAR_ARCHIVE,"Enable train systems debugger") +local C_DebugUpdateInterval = CreateConVar("metrostroi_debugger_update_interval",1,FCVAR_ARCHIVE,"Seconds between debugger data messages") + +Metrostroi.Debugger = {} +Metrostroi.Debugger.Clients = {} +Metrostroi.Debugger.NameMap = {} +Metrostroi.Debugger.EntVarCounts = {} +local Debugger = Metrostroi.Debugger + util.AddNetworkString("metrostroi-debugger-dataupdate") util.AddNetworkString("metrostroi-debugger-entremoved") @@ -9,10 +14,8 @@ util.AddNetworkString("metrostroi-debugger-entnamemap") if game.SinglePlayer() then - RunConsoleCommand("metrostroi_debugger_update_interval",0) -end --[[else --Lets not reset it every time on dedicated servers - RunConsoleCommand("metrostroi_debugger_update_interval",0.5) -end--]] + C_DebugUpdateInterval:SetFloat(0.0) +end local function SendNameMap(ply,ent) net.Start("metrostroi-debugger-entnamemap") @@ -51,6 +54,7 @@ end --Handler for adding new ents to listen to local function cmdinithandler(ply,cmd,args,fullstring) + if not C_DebugEnabled:GetBool() then return end local ent = ply:GetEyeTrace().Entity if not IsValid(ent) or not ent.GetDebugVars then return end @@ -69,7 +73,7 @@ end local nextthink = 0 local function think() if CurTime() < nextthink then return end - nextthink = CurTime() + GetConVar("metrostroi_debugger_update_interval"):GetFloat() + nextthink = CurTime() + C_DebugUpdateInterval:GetFloat() --Loop over clients and their ents and send the collected data --Check for new entity variables @@ -101,9 +105,7 @@ local function think() end net.Send(ply) end - end -hook.Add("Think","metrostroi-debugger-think",think) local function OnEntRemove(ent) RemoveEnt(nil,ent) @@ -116,3 +118,21 @@ end hook.Add("EntityRemoved","metrostroi-debugger-cleanup",OnEntRemove) hook.Add("PlayerDisconnected","metrstroi-debugger-plycleanup",RemoveEnt) + +-- Start/stop debugger think +if C_DebugEnabled:GetBool() then + hook.Add("Think","metrostroi-debugger-think",think) +end + +cvars.AddChangeCallback("metrostroi_debugger_enabled", function(convar, oldValue, newValue) + if C_DebugEnabled:GetBool() then + nextthink = 0 + hook.Add("Think","metrostroi-debugger-think",think) + else + hook.Remove("Think","metrostroi-debugger-think") + end +end,"sv_debugger") + +cvars.AddChangeCallback("metrostroi_debugger_update_interval", function(convar, oldValue, newValue) + nextthink = CurTime() + C_DebugUpdateInterval:GetFloat() +end,"sv_debugger")