From 066ce7ecf25b1671b825a540ba0dd1c103bcfefc Mon Sep 17 00:00:00 2001 From: Hellss Date: Wed, 14 Jul 2021 21:40:28 +0300 Subject: [PATCH 1/5] #263 new arg metrostroi_wire --- lua/entities/gmod_subway_base/init.lua | 5 ++++- lua/metrostroi/sv_util.lua | 17 +++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lua/entities/gmod_subway_base/init.lua b/lua/entities/gmod_subway_base/init.lua index 09e6777..09c4397 100644 --- a/lua/entities/gmod_subway_base/init.lua +++ b/lua/entities/gmod_subway_base/init.lua @@ -792,7 +792,10 @@ end]] -------------------------------------------------------------------------------- function ENT:LeaderReadTrainWire(id) if self.TrainWireOverrides[id] then return self.TrainWireOverrides[id] end - if self.TrainWireOutside[id] then return self.TrainWireOutside[id] end + local w = self.TrainWireOutside[id] + if w then + if isnumber(w) then return w elseif (self.TrainWireTurbostroi[tonumber(w)] or 0) > 0 then return 1 end + end return (self.TrainWireTurbostroi[id] or 0)+(self.TrainWireWriters[id] or 0) end diff --git a/lua/metrostroi/sv_util.lua b/lua/metrostroi/sv_util.lua index dd277bd..621c218 100644 --- a/lua/metrostroi/sv_util.lua +++ b/lua/metrostroi/sv_util.lua @@ -321,7 +321,7 @@ concommand.Add("metrostroi_fail", function(ply, _, args) if train then if IsValid(ply) then ply:PrintMessage(HUD_PRINTCONSOLE,"Generating random failure in your train!") - print("Player "..tostring(ply).." generated random failure in train "..train:EntIndex()) + print(tostring(ply).." generated random failure in train "..train:EntIndex()) else print("Generating random failure in train "..train:EntIndex()) end @@ -355,7 +355,7 @@ concommand.Add("metrostroi_fail_reset", function(ply, _, args) if #trainList > 0 then if IsValid(ply) then ply:PrintMessage(HUD_PRINTCONSOLE,"Reset all failures in your train!") - print("Player "..tostring(ply).." reset all failures in train "..trainList[1]:EntIndex()) + print(tostring(ply).." reset all failures in train "..trainList[1]:EntIndex()) else print("Reset all failures in train "..trainList[1]:EntIndex()) end @@ -390,14 +390,15 @@ concommand.Add("metrostroi_wire", function(ply, _, args) if train then if IsValid(ply) then args[1] = tonumber(args[1]) - if not args[1] then ply:PrintMessage(HUD_PRINTCONSOLE,"Argument must be a number") return end - ply:PrintMessage(HUD_PRINTCONSOLE,"sets outside power in train wire"..args[1].."!") - print("Player "..tostring(ply).." sets outside power in train "..args[1].." wire failure in train "..train:EntIndex()) + if not args[1] then ply:PrintMessage(HUD_PRINTCONSOLE,"1st argument must be a number") return end + if args[2] and not tonumber(args[2]) then ply:PrintMessage(HUD_PRINTCONSOLE,"2nd argument must be a number") return end + ply:PrintMessage(HUD_PRINTCONSOLE,"sets outside power in train wire"..args[1]..(args[2] and "(from "..args[2].." wire)" or "").."!") + print(tostring(ply).." sets outside power in train "..args[1].." wire"..(args[2] and "(from "..args[2].." wire)" or "").." failure in train "..train:EntIndex()) else print("sets outside power in train wire "..train:EntIndex()) end --if train.WriteTrainWire then train:WriteTrainWire(args[1],1) end - train.TrainWireOutside[args[1]] = 1 + train.TrainWireOutside[args[1]] = args[2] and args[2] or 1 --if train.WriteTrainWire then train:WriteTrainWire(args[1],1) end else if IsValid(ply) then @@ -427,7 +428,7 @@ concommand.Add("metrostroi_wire_reset", function(ply, _, args) if #trainList > 0 then if IsValid(ply) then ply:PrintMessage(HUD_PRINTCONSOLE,"reset wire outside power in train!") - print("Player "..tostring(ply).." reset outside power in train ") + print(tostring(ply).." reset outside power in train ") else print("Reset outside power in trains ") end @@ -453,7 +454,7 @@ concommand.Add("metrostroi_can", function(ply, _, args) if tonumber(args[4]) then value = tonumber(args[4]) end local srcid = tonumber(args[5]) ply:PrintMessage(HUD_PRINTCONSOLE,"Hacking CAN!") - print(Format("Player %s hack CAN(%s->%s:%s %s=%s)",ply,srcid,system,id,name,value)) + print(Format("%s hack CAN(%s->%s:%s %s=%s)",ply,srcid,system,id,name,value)) train:CANWrite("Hacker",srcid or train:GetWagonNumber(),system,id,name,value) end) From ae3ea351dca3d4b51bdfdaf205528ac559e6d349 Mon Sep 17 00:00:00 2001 From: Hellss Date: Wed, 4 Aug 2021 23:21:07 +0300 Subject: [PATCH 2/5] new arg metrostroi_wire_reset --- lua/metrostroi/sv_util.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lua/metrostroi/sv_util.lua b/lua/metrostroi/sv_util.lua index 621c218..bfc2a66 100644 --- a/lua/metrostroi/sv_util.lua +++ b/lua/metrostroi/sv_util.lua @@ -393,7 +393,7 @@ concommand.Add("metrostroi_wire", function(ply, _, args) if not args[1] then ply:PrintMessage(HUD_PRINTCONSOLE,"1st argument must be a number") return end if args[2] and not tonumber(args[2]) then ply:PrintMessage(HUD_PRINTCONSOLE,"2nd argument must be a number") return end ply:PrintMessage(HUD_PRINTCONSOLE,"sets outside power in train wire"..args[1]..(args[2] and "(from "..args[2].." wire)" or "").."!") - print(tostring(ply).." sets outside power in train "..args[1].." wire"..(args[2] and "(from "..args[2].." wire)" or "").." failure in train "..train:EntIndex()) + print(tostring(ply).." sets outside power in train "..args[1].." wire"..(args[2] and "(from "..args[2].." wire)" or "").." failure in train number "..train:GetWagonNumber()) else print("sets outside power in train wire "..train:EntIndex()) end @@ -427,12 +427,17 @@ concommand.Add("metrostroi_wire_reset", function(ply, _, args) if #trainList > 0 then if IsValid(ply) then - ply:PrintMessage(HUD_PRINTCONSOLE,"reset wire outside power in train!") - print(tostring(ply).." reset outside power in train ") + if args[1] and not tonumber(args[1]) then ply:PrintMessage(HUD_PRINTCONSOLE,"Argument must be a number") return end + ply:PrintMessage(HUD_PRINTCONSOLE,"reset "..(args[1] and args[1].." " or "").."wire outside power in train!") + print(tostring(ply).." reset "..(args[1] and args[1].." wire " or "").."outside power in train ") else print("Reset outside power in trains ") - end - for _,v in pairs(trainList) do v.TrainWireOutside = {} end + end + if args[1] then + for _,v in pairs(trainList) do v.TrainWireOutside[tonumber(args[1])] = nil end + else + for _,v in pairs(trainList) do v.TrainWireOutside = {} end + end else if IsValid(ply) then ply:PrintMessage(HUD_PRINTCONSOLE,"You must be inside a train!") From d397ba82f6cde282e656f6caf05196ac159fcfbc Mon Sep 17 00:00:00 2001 From: Hellss Date: Wed, 4 Aug 2021 23:24:28 +0300 Subject: [PATCH 3/5] . --- lua/metrostroi/sv_util.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/metrostroi/sv_util.lua b/lua/metrostroi/sv_util.lua index bfc2a66..417b368 100644 --- a/lua/metrostroi/sv_util.lua +++ b/lua/metrostroi/sv_util.lua @@ -427,17 +427,17 @@ concommand.Add("metrostroi_wire_reset", function(ply, _, args) if #trainList > 0 then if IsValid(ply) then - if args[1] and not tonumber(args[1]) then ply:PrintMessage(HUD_PRINTCONSOLE,"Argument must be a number") return end + if args[1] and not tonumber(args[1]) then ply:PrintMessage(HUD_PRINTCONSOLE,"Argument must be a number") return end ply:PrintMessage(HUD_PRINTCONSOLE,"reset "..(args[1] and args[1].." " or "").."wire outside power in train!") print(tostring(ply).." reset "..(args[1] and args[1].." wire " or "").."outside power in train ") else print("Reset outside power in trains ") end - if args[1] then - for _,v in pairs(trainList) do v.TrainWireOutside[tonumber(args[1])] = nil end - else - for _,v in pairs(trainList) do v.TrainWireOutside = {} end - end + if args[1] then + for _,v in pairs(trainList) do v.TrainWireOutside[tonumber(args[1])] = nil end + else + for _,v in pairs(trainList) do v.TrainWireOutside = {} end + end else if IsValid(ply) then ply:PrintMessage(HUD_PRINTCONSOLE,"You must be inside a train!") From c09a328195b78e0dd017b51811797d527004d87f Mon Sep 17 00:00:00 2001 From: Hellss Date: Tue, 9 Nov 2021 00:05:22 +0300 Subject: [PATCH 4/5] Fix --- lua/entities/gmod_subway_base/init.lua | 6 +++--- lua/metrostroi/sv_util.lua | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lua/entities/gmod_subway_base/init.lua b/lua/entities/gmod_subway_base/init.lua index 09c4397..6369734 100644 --- a/lua/entities/gmod_subway_base/init.lua +++ b/lua/entities/gmod_subway_base/init.lua @@ -245,6 +245,7 @@ function ENT:Initialize() -- Overrides for train wire values from wiremod interface and special concommand self.TrainWireOverrides = {} self.TrainWireOutside = {} + self.TrainWireOutsideFrom = {} -- Is this train 'odd' or 'even' in coupled set @@ -792,9 +793,8 @@ end]] -------------------------------------------------------------------------------- function ENT:LeaderReadTrainWire(id) if self.TrainWireOverrides[id] then return self.TrainWireOverrides[id] end - local w = self.TrainWireOutside[id] - if w then - if isnumber(w) then return w elseif (self.TrainWireTurbostroi[tonumber(w)] or 0) > 0 then return 1 end + if self.TrainWireOutside[id] then + return (self.TrainWireOutsideFrom[id] and self.TrainWireTurbostroi[self.TrainWireOutsideFrom[id]] or 1)*self.TrainWireOutside[id] end return (self.TrainWireTurbostroi[id] or 0)+(self.TrainWireWriters[id] or 0) end diff --git a/lua/metrostroi/sv_util.lua b/lua/metrostroi/sv_util.lua index 417b368..f6b4ac4 100644 --- a/lua/metrostroi/sv_util.lua +++ b/lua/metrostroi/sv_util.lua @@ -392,13 +392,15 @@ concommand.Add("metrostroi_wire", function(ply, _, args) args[1] = tonumber(args[1]) if not args[1] then ply:PrintMessage(HUD_PRINTCONSOLE,"1st argument must be a number") return end if args[2] and not tonumber(args[2]) then ply:PrintMessage(HUD_PRINTCONSOLE,"2nd argument must be a number") return end + args[2] = tonumber(args[2]) ply:PrintMessage(HUD_PRINTCONSOLE,"sets outside power in train wire"..args[1]..(args[2] and "(from "..args[2].." wire)" or "").."!") print(tostring(ply).." sets outside power in train "..args[1].." wire"..(args[2] and "(from "..args[2].." wire)" or "").." failure in train number "..train:GetWagonNumber()) else print("sets outside power in train wire "..train:EntIndex()) end --if train.WriteTrainWire then train:WriteTrainWire(args[1],1) end - train.TrainWireOutside[args[1]] = args[2] and args[2] or 1 + train.TrainWireOutside[args[1]] = 1 + train.TrainWireOutsideFrom[args[1]] = args[2] --if train.WriteTrainWire then train:WriteTrainWire(args[1],1) end else if IsValid(ply) then @@ -433,10 +435,17 @@ concommand.Add("metrostroi_wire_reset", function(ply, _, args) else print("Reset outside power in trains ") end + args[1] = tonumber(args[1]) if args[1] then - for _,v in pairs(trainList) do v.TrainWireOutside[tonumber(args[1])] = nil end + for _,v in pairs(trainList) do + v.TrainWireOutside[args[1]] = nil + v.TrainWireOutsideFrom[args[1]] = nil + end else - for _,v in pairs(trainList) do v.TrainWireOutside = {} end + for _,v in pairs(trainList) do + v.TrainWireOutside = {} + v.TrainWireOutsideFrom = {} + end end else if IsValid(ply) then From 3a5d474eb59011ee7523c67a35000e4d46a02599 Mon Sep 17 00:00:00 2001 From: Hellss Date: Tue, 9 Nov 2021 00:17:05 +0300 Subject: [PATCH 5/5] Fix2 --- lua/entities/gmod_subway_base/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/entities/gmod_subway_base/init.lua b/lua/entities/gmod_subway_base/init.lua index 6369734..4343983 100644 --- a/lua/entities/gmod_subway_base/init.lua +++ b/lua/entities/gmod_subway_base/init.lua @@ -794,7 +794,7 @@ end]] function ENT:LeaderReadTrainWire(id) if self.TrainWireOverrides[id] then return self.TrainWireOverrides[id] end if self.TrainWireOutside[id] then - return (self.TrainWireOutsideFrom[id] and self.TrainWireTurbostroi[self.TrainWireOutsideFrom[id]] or 1)*self.TrainWireOutside[id] + return (self.TrainWireOutsideFrom[id] and (self.TrainWireTurbostroi[self.TrainWireOutsideFrom[id]] or 0) or 1)*self.TrainWireOutside[id] end return (self.TrainWireTurbostroi[id] or 0)+(self.TrainWireWriters[id] or 0) end